zznu 1203: 做幻方
来源:互联网 发布:啊哈算法 在线阅读 编辑:程序博客网 时间:2024/06/05 21:56
1203: 做幻方
时间限制: 1 Sec 内存限制: 128 MB提交: 111 解决: 38
[提交][状态]
题目描述
Apple最近迷上了做幻方,Apple还是个中高手,只要你说个奇数N就能把N*N的幻方做出来。其实你可以比他做得更好的。Apple总是画得很乱,而你可以利用程序排得很整齐^_^ 幻方的要求:每一行,每一列,还有两条斜线上数字的和都相等.
输入
每行一个奇数N(0< N < 30),输入0结束
输出
输入一个奇数,输出一个幻方,顺序参照样板输出;同一列的数右对齐,数与数用一个空格分开;输出完以后加一个回车。
样例输入
510
样例输出
11 18 25 2 910 12 19 21 3 4 6 13 20 2223 5 7 14 1617 24 1 8 151
提示
来源
#include <algorithm>
#include <iostream>
#include <string.h>
#include <cmath>
using namespace std;
#define INF 0x3f3f3f3f
int map[35][35],v[35][35],n;
void print1()
{
int i,j;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(j)
printf(" %d",map[i][j]);
else
printf("%d",map[i][j]);
}
printf("\n");
}
}
void print2()
{
int i,j;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(j)
printf(" %2d",map[i][j]);
else
printf("%2d",map[i][j]);
}
printf("\n");
}
}
void print3()
{
int i,j;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(j)
printf(" %3d",map[i][j]);
else
printf("%3d",map[i][j]);
}
printf("\n");
}
}
void huan()
{
int j=n/2,i=n-1,cot=1,m=n*n;
while(cot<=m)
{
if(v[i][j]||(i>=n&&j>=n))
{
i-=2;
j--;
}
else
{
if(i>=n)
{
i=0;
}
else if(j>=n)
{
j=0;
}
map[i][j]=cot++;
v[i][j]=1;
i++;
j++;
}
}
}
int main()
{
while(scanf("%d",&n),n)
{
memset(v,0,sizeof(v));
huan();
if(n<=3)
{
print1();
}
else if(n<=9)
print2();
else
print3();
printf("\n");
}
}
0 0
- zznu 1203: 做幻方
- zznu 1304: 防御导弹
- zznu 1994 (水)
- zznu 2009: 咫尺之间
- ZZNU【1715】矩阵乘法
- 【ZZNU 1715 矩阵乘法】
- zznu 1903: Alex and magic 背包
- zznu 1257 HDU1052 田忌赛马
- ZZNU 1988 (大数取余)
- ZZNU 1991 (结构体排序)
- zznu 1992 (dp + 01双背包)
- ZZNU 1627 Card Trick的一些感悟及见解
- ZZNU 1989 (求线段上的整数点个数)
- ZZNU的油田(DP+记录路径)(待修改)
- 1203: 做幻方
- 【ZZULIOJ】1203: 做幻方
- 做幻方
- zjut1005 做幻方
- Python学习 (九 正则表达式)
- UIResponder
- Zookeeper的安装配置及基本开发
- UVA 11752 The Super Powers(至少是两个正整数的幂的幂数)
- 构造方法
- zznu 1203: 做幻方
- SQL SERVER 2005命令行修改用户sa密码
- 一个新的开始,纪录点点滴滴
- 软件开发平台实现目标归纳
- IOS手势处理
- php 实现文件上传功能
- [原创翻译]《Netty in Action》英文2016年版中文翻译版·第二章:你的第一个Netty应用程序
- 专题三1018
- PackageManager使用详解