文章标题

来源:互联网 发布:图片纠偏软件 编辑:程序博客网 时间:2024/06/03 16:35

`

这道题当时第一眼见到的时候,感觉真的是一脸懵逼,真的不知道是怎么一回事,最后想了一下,不就是回环的进行填数吗,于是我就尝试用了很多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

12

样例输出

7 8 1
6 9 2
5 4 3

``#include<iostream>using namespace std;int main(){    int n;    cin>>n;    int a[n][n];    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;}

“`

原创粉丝点击