您的位置:首页 > 其它

文章标题

2017-10-02 19:49 169 查看
`

这道题当时第一眼见到的时候,感觉真的是一脸懵逼,真的不知道是怎么一回事,最后想了一下,不就是回环的进行填数吗,于是我就尝试用了很多while循环,于是就改了好久,终于AC了,这道题当然现在看,可能没有那么难,可是却实伤了脑细胞啊!!不说了,贴代码。

蛇形填数

时间限制:3000 ms | 内存限制:65535 KB

难度:3

描述

在n*n方陈里填入1,2,…,n*n,要求填成蛇形。例如n=4时方陈为:

10 11 12 1

9 16 13 2

8 15 14 3

7 6 5 4

输入

直接输入方陈的维数,即n的值。(n<=100)

输出

输出结果是蛇形方陈。

样例输入

3

1
2


样例输出

7 8 1

6 9 2

5 4 3

``
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a

;
int flag=1;//设置flag进行标记循环了几圈,
int num1=0,num2;
int i=0;
int biaozhi=0;//找到推出的条件设置标志位
while(1){
num2=n-flag;//
while(num1<=n-flag){
i++;
a[num1++][num2]=i;
if(i==n*n){
biaozhi=1;
break;
}
}
num1--;//多加的就要减下来
num2--;
if(biaozhi==1)break;
while(num2>=flag-1){
i++;
a[num1][num2--]=i;
if(i==n*n){
biaozhi=1;
break;
}
}
if(biaozhi==1)break;
num2++;
num1--;
while(num1>=flag-1){
i++;
a[num1--][num2]=i;
if(i==n*n){
biaozhi=1;
break;
}
}
if(biaozhi==1)break;
num1++;
num2++;
while(num2<=n-flag-1){
i++;
a[num1][num2++]=i;
if(i==n*n){
biaozhi=1;
break;
}

}
if(biaozhi==1)break;
flag++;
num2--;
num1++;
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}


“`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  暴力