33 蛇形填数
来源:互联网 发布:手机如何联系淘宝小二 编辑:程序博客网 时间:2024/05/01 00:01
蛇形填数
时间限制: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
- 样例输出
7 8 16 9 25 4 3
#include<iostream>#include<iomanip>#include<cmath>using namespace std;int main(){ int n,i,j,x,y,l,num; int nn[100][100]; while(cin>>n) { x=0;y=n-1;l=n-1;num=1; //x,y为坐标,l为每次移动的长度,num为当前位置填的数 for(i=0;i<ceil(n/2);i++)//有几圈就循环几次 { for(j=0;j<l;j++) { nn[x][y]=num; num++; x++; } //从右上角向下移动(从每圈右上角开始) for(j=0;j<l;j++) { nn[x][y]=num; num++; y--; } //从右下角向左移动 for(j=0;j<l;j++) { nn[x][y]=num; num++; x--; } //从左下角向上移动 for(j=0;j<l;j++) { nn[x][y]=num; num++; y++; } //从左上角向右移动(回到每圈最开始的位置,即右上角) x++;y--;l-=2; //x+,y-使坐标往左下移动一位,到达下一圈的左上角。每圈都比它外面的那一圈少两行,所以l每次减2 } if(n%2==1) nn[n/2][n/2]=n*n; //当n为单数时,上述循环无法将最中心的位置赋值,所以添加本句 for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(j==0) cout<<nn[i][j]; else cout<<' '<<nn[i][j]; } cout<<endl; } } return 0;}
0 0
- 33 蛇形填数
- 33 蛇形填数
- NYOJ 33 蛇形填数
- 题目:33 蛇形填数
- NYoj 33 蛇形填数
- NYOJ-33 蛇形填数
- NYOJ 33 蛇形填数
- NYOJ-蛇形填数-33
- NYOJ 蛇形填数 33
- NYOJ 33-蛇形填数
- NYOJ-33 蛇形填数
- 南阳 33 蛇形填数
- NYOJ 33 蛇形填数
- NYOJ 33 蛇形填数
- (33)蛇形填数
- NYOJ-33蛇形填数
- NYOJ 33 蛇形填数
- NYOJ-33-蛇形填数
- 智力风暴(经典智力题)
- Matlab 中 residuez函数的使用
- 单一职责原则
- 怎样批量删除.svn文件
- Jquery资源合辑
- 33 蛇形填数
- Linux用户空间与内核空间
- 认识WebGL
- codeforces #257 C题Jzzhu and Chocolate
- 34 韩信点兵
- JSP邮编区号管理系统
- 【LeetCode】【Python题解】Reverse Integer
- 杭电1102 Constructing Roads
- [C/C++标准库]_[初级]_[使用std::sort排序各种类型数据]