关于数组初始化求大佬解释
查看原帖
关于数组初始化求大佬解释
605405
Mitsuhaa楼主2021/11/3 17:15

using namespace std;

int main(void)
{
    int N, j, k;
    bool flag = true;
    cin >> N;
    int a[N][N];
    for (j = 0; j < N; j++)
        {
            for (k = 0; k < N; k++)
            {
                a[j][k] = 0;
            }
        }
    a[0][(N - 1) / 2] = 1;
    for (int i = 2; i <= N * N; i++)
    {
        for (j = 0; j < N; j++)
        {
            for (k = 0; k < N; k++)
            {
                if (a[j][k] == i - 1 )
                {
                    break;
                }
            }
            if (a[j][k] == i - 1 && k < N)
            {
                break;
            }

        }
                    if(j == 0 && k != (N - 1) )
                    {
                        a[N - 1][k + 1] = i;
                        flag = false;
                    }
                    if(k == N - 1 && j != 0 && flag)
                    {
                        a[j - 1][0] = i;
                        flag = false;
                    }
                    if(j == 0 && k == (N - 1) && flag)
                    {
                        a[j + 1][k] = i;
                        flag = false;
                    }
                    if(j != 0 && k != (N - 1) && a[j - 1][k + 1] == 0 && flag)
                    {
                        a[j - 1][k + 1] = i;
                        flag = false;
                    }
                        else if (flag && a[j - 1][k + 1] != 0)
                        {
                            a[j + 1][k] = i;
                            flag = false;
                        }
                        flag = true;
    }
            for (j = 0; j < N; j++)
            {
            for (k = 0; k < N; k++)
            {
                cout << a[j][k] << " ";
            }
                cout << endl;
            }
        return 0;
}
// *  定义数组a[N][N] ={0} 若输入n = 3 会发现a[0][2]并没有初始化,为什么呢。。
2021/11/3 17:15
加载中...