zjut1005 做幻方
来源:互联网 发布:dota2手机直播软件 编辑:程序博客网 时间:2024/06/06 07:23
Description:
Apple最近迷上了做幻方,Apple还是个中高手,只要你说个奇数N就能把N*N的幻方做出来。其实你可以比他做得更好的。Apple总是画得很乱,而你可以利用程序排得很整齐^_^ 幻方的要求:每一行,每一列,还有两条斜线上数字的和都相等
Input:
每行一个数N(0< N < 30),输入0结束Output:
输入一个奇数,输出一个幻方,每个数占3格,顺序参照样板输出,输出完以后加一个回车。Sample Input:
5
1
0
Sample Output:
11 18 25 2 9
10 12 19 21 3
4 6 13 20 22
23 5 7 14 16
17 24 1 8 15
1
Hint:
如果不会做幻方的请从1开始数到最后,相信你会发现其中的规律。当然输出也要按照这样的格式Source:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int i,j,k,n;
int a[31][31];
while(cin>>n,n)
{
memset(a,0,sizeof(a));
i=n-1;j=n/2;
a[i][j]=1;//先将最下面一行中间位置置1
for(k=2;k<=n*n;k++)
{
if(a[(i+1)%n][(j+1)%n]==0)
{i=(i+1)%n; j=(j+1)%n;}
else i=(i-1+n)%n;
a[i][j]=k;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{cout<<setw(3)<<a[i][j];}
cout<<endl;
}
cout<<endl;
}
system("pause");
return 0;
}
记:关键是确定下一个数填的位置,规律是:1以后的每一个数只能填在它所在位置的下一行的下一行(记为A),如果A已经有数,就把下一个数填在当前这个数的上面(即与这个数同一列的上一个位置)
0 0
- zjut1005 做幻方
- ZJUT1005做幻方
- 做幻方
- 做幻方 oj114
- 1203: 做幻方
- zznu 1203: 做幻方
- 【ZZULIOJ】1203: 做幻方
- HPUoj题目 1080 做幻方(找规律,格式好坑)
- paip.数据挖掘--导出词库 清理太长的iptcode
- 深夜我在CSDN
- 计算机
- [C语言控]用C语言调用DirectWrite
- QT事件处理及绘图
- zjut1005 做幻方
- 第四章作业2
- 异常处理
- ListView原理
- 适配器模式(结构型模式)
- 浅谈大数据
- 【QT技术应用】2D绘图
- Java 参数传递(到底是值传递 还是引用传递)
- Android MediaScanner深入研究