首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

帮小弟我看看 多谢 急1

2012-06-02 
帮我看看在线等谢谢急急急!!1187296345n3;1 12 11 102 13 16 93 14 15 84567n4;问题当为n时怎么编写程序

帮我看看 在线等 谢谢 急急急!!1
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;
}

[解决办法]

C/C++ code
#include <stdio.h>#define MAXN 10char m[MAXN+2][MAXN+2];char d;int x,y,k,n;void main() {    while (1) {        printf("Input n(1..%d):",MAXN);        fflush(stdout);        rewind(stdin);        if (1==scanf("%d",&n)) {            if (1<=n && n<=MAXN) break;        }    }    y=0  ;for (x=0;x<=n+1;x++) m[y][x]=1;    y=n+1;for (x=0;x<=n+1;x++) m[y][x]=1;    x=0  ;for (y=0;y<=n+1;y++) m[y][x]=1;    x=n+1;for (y=0;y<=n+1;y++) m[y][x]=1;    for (y=1;y<=n;y++) {        for (x=1;x<=n;x++) {            m[y][x]=0;        }    }    x=1;    y=1;    k=0;    d='D';    while (1) {        k++;        if (k>n*n) break;        m[y][x]=k;        switch (d) {            case 'D':                if (0==m[y+1][x])  y++;                else              {x++;d='R';}            break;            case 'R':                if (0==m[y][x+1])  x++;                else              {y--;d='U';}            break;            case 'U':                if (0==m[y-1][x])  y--;                else              {x--;d='L';}            break;            case 'L':                if (0==m[y][x-1])  x--;                else              {y++;d='D';}            break;        }    }    for (y=1;y<=n;y++) {        for (x=1;x<=n;x++) {            printf("%4d",m[y][x]);        }        printf("\n");    }} 

热点排行