gpt4 book ai didi

c - 如何输入矩阵的边界?

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:35 25 4
gpt4 key购买 nike

我无法按照下图中显示的方式填充矩阵。矩阵必须为 NxN,其中 N 为偶数。

Example

我认为最好的方法是在 while 中使用两个 for。像这样:

int a=0, c=1, i, j, flag=0, map[N][N] //N with a #define

//First I input my matrix with 0.

for (i=0; i<N; i++)
for (j=0; j<N; j++)
map[i][j]=0;

//Here I fill the matrix
while(!flag){

for(j=a; j<N-a; j++){
map[i][j]=c;
c++;
}
for(i=a+1; i<N-a; i++){
map[i][j]=c;
c++;
}
for(j=N-a-1; j>=a; j--){
map[i][j]=c;
c++;
}
for(i=N-a-1; i>a+1; i--){
if(map[i][j]==0){
map[i][j]=c;
c++;
}
else if(map[i][j]!=0)
flag=1;
}
c=1;
a++;
}

问题是 id 不能正常工作...你能帮帮我吗?谢谢

最佳答案

无需修改大部分代码的最简单方法如下:

 #define N 4
#include<stdio.h>

int a=0, c=1, i, j, flag=0, map[N][N]; //N with a #define


main() {

//First I input my matrix with 0.
for (i=0; i<N; i++)
for (j=0; j<N; j++)
map[i][j]=0;

i=0;
//Here I fill the matrix
while(!flag){

for(j=a; j<N-a; j++){
map[i][j]=c;
c++;
}
j--;
for(i=a+1; i<N-a-1; i++){
map[i][j]=c;
c++;
}
for(j=N-a-1; j>=a; j--){
map[i][j]=c;
c++;
}
j++;
for(i=N-a-1; i>=a+1; i--){
if(map[i][j]==0){
map[i][j]=c;
c++;
}
}
if(map[i+1][j+1]!=0)
flag=1;

c=1;
a++;
i++;
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%d ",map[i][j]);
}
printf("\n");
}
}

此处N设置为4。所以输出如下:

1 2 3 4
12 1 2 5
11 4 3 6
10 9 8 7

关于c - 如何输入矩阵的边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48306821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com