187
296
345
n=3;
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
n=4;
问题 当为n时怎么编写程序?
我的解法:(错了 不知道为什么)
#include<iostream>
using namespace std;
int main()
{
int i,j,a[50][50],n,b=n-1,c=n,d=0,x=n,y=0,k=1;
cin>>n;
for(i=0;i<n/2;i++,c--,d++)
{
if(j=d&&j<c-1)
{for(j=0;j<n;j++)
a[j][d]=k++;}
if(b=c-1&&j<c-1)
{for(j=0;j<n;j++,b--)
a[c-1][j]=k++;}
if(x=c-1&&j>d)
{for(j=0;j<n;j++,x--)
a[n-1-j][c-1]=k++;}
if(y=d&&j>d+1)
{for(j=0;j<n;j++,y++)
a[d][n-1-j]=k++;}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
关于数字排列问题编程 在线等。求思路,指出我写的程序为什么错了
答案:1 悬赏:0 手机版
解决时间 2021-01-30 18:56
- 提问者网友:遁入空寂
- 2021-01-29 20:44
最佳答案
- 五星知识达人网友:逃夭
- 2021-01-29 21:41
#include<stdio.h>
int main()
{
int i;
int j;
int k = 1;
int m;
int n;
int s[20][20];
printf("please input you want to putout results:");
scanf("%d",&n);
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
s[i][j] = -1;
i = 1;
j = 1;
for(m = 1; m <= n * n; m++)
{
if(k == 1)
{
if(s[i][j] == -1)
s[i][j++] = m;
else
{
i++;
j--;
k = 2;
}
}
if(k == 2)
{
if(s[i][j] == -1)
s[i++][j] = m;
else
{
i--;
j--;
k = 3;
}
}
if(k == 3)
{
if(s[i][j] == -1)
s[i][j--] = m;
else
{
i--;
j++;
k = 4;
}
}
if(k == 4)
{
if(s[i][j] == -1)
s[i--][j] = m;
else
{
i++;
j++;
m--;
k = 1;
}
}
}
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
printf("%-4d",s[i][j]);
printf("\n");
}
return 0;
}
int main()
{
int i;
int j;
int k = 1;
int m;
int n;
int s[20][20];
printf("please input you want to putout results:");
scanf("%d",&n);
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
s[i][j] = -1;
i = 1;
j = 1;
for(m = 1; m <= n * n; m++)
{
if(k == 1)
{
if(s[i][j] == -1)
s[i][j++] = m;
else
{
i++;
j--;
k = 2;
}
}
if(k == 2)
{
if(s[i][j] == -1)
s[i++][j] = m;
else
{
i--;
j--;
k = 3;
}
}
if(k == 3)
{
if(s[i][j] == -1)
s[i][j--] = m;
else
{
i--;
j++;
k = 4;
}
}
if(k == 4)
{
if(s[i][j] == -1)
s[i--][j] = m;
else
{
i++;
j++;
m--;
k = 1;
}
}
}
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
printf("%-4d",s[i][j]);
printf("\n");
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯