22:神奇的幻方/NOI / 1.8编程基础之多维数组
2016-10-04 15:45
781 查看
总时间限制: 1000ms内存限制: 65535kB描述
幻方是一个很神奇的N*N矩阵,它的每行、每列与对角线,加起来的数字和都是相同的。
我们可以通过以下方法构建一个幻方。(阶数为奇数)
1.第一个数字写在第一行的中间
2.下一个数字,都写在上一个数字的右上方:
a.如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列
b.如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行
c.如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方
输入一个数字N(N<=20)输出按上方法构造的2N-1 * 2N-1的幻方样例输入
样例输出
幻方是一个很神奇的N*N矩阵,它的每行、每列与对角线,加起来的数字和都是相同的。
我们可以通过以下方法构建一个幻方。(阶数为奇数)
1.第一个数字写在第一行的中间
2.下一个数字,都写在上一个数字的右上方:
a.如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列
b.如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行
c.如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方
输入一个数字N(N<=20)输出按上方法构造的2N-1 * 2N-1的幻方样例输入
3
样例输出
17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 311 18 25 2 9
//OpenJudge - 神奇的幻方 #include<iostream> #include<stdio.h> using namespace std; int main() { int a[40][40]={0}; int n,nc; cin>>n; int length; length =2*n-1; nc = length*length; int i,j; int ipre,jpre; for(i=0;i<nc;i++) { if(i==0) { ipre=0; jpre=n-1; a[ipre][jpre]=i+1; continue; } else if(ipre==0 && jpre!=length-1 ) { ipre=length-1; jpre=jpre+1; a[ipre][jpre]=i+1; } else if(jpre == length -1 &&ipre != 0) { ipre=ipre-1; jpre=0; a[ipre][jpre]=i+1; } else if((ipre == 0&& jpre==length-1)||a[ipre-1][jpre+1]!=0) { ipre=ipre+1; jpre=jpre; a[ipre][jpre]=i+1; } else { ipre=ipre-1; jpre=jpre+1; a[ipre][jpre]=i+1; } } for(i=0;i<length;i++) { for(j=0;j<length;j++) if(j==0) cout<<a[i][j]; else cout<<" "<<a[i][j]; cout<<endl; } return 0; }
相关文章推荐
- NOI题解(1.8编程基础之多维数组)(待补全)
- noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T21——T25
- NOI题解(1.8编程基础之多维数组)(待补全)
- 16:矩阵剪刀石头布(1.8编程基础之多维数组)
- 04:错误探测(1.8编程基础之多维数组)
- 07:矩阵归零消减序列和(1.8编程基础之多维数组)
- 17:最好的草( 1.8编程基础之多维数组)
- 12:变幻的矩阵( 1.8编程基础之多维数组)
- 21:二维数组右上左下遍历(1.8编程基础之多维数组)
- 25:螺旋加密(1.8编程基础之多维数组)
- 13:图像模糊处理(1.8编程基础之多维数组)
- 11:图像旋转(1.8编程基础之多维数组)
- OPENJUDGE 1.8 22:神奇的幻方
- 百练noi 22:神奇的幻方
- 黑马程序员之C#编程基础学习笔记:计算一个整数数组的所有元素的和。
- 黑马程序员之C#编程基础学习笔记:将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素减1。
- 黑马程序员之C#编程基础学习笔记:从一个整数数组中取出最大的整数。
- 黑马程序员之C#编程基础学习笔记:将一个字符串数组的元素的顺序进行反转。
- 黑马程序员之C#编程基础学习笔记:有一个整数数组,请声明一个字符串数组,将整数数组中的每一个元素的值转换为字符串保存到字符串数组中
- JAVA基础之一维数组和多维数组