代码:输出幻方(魔方阵)
2016-01-28 00:08
363 查看
//幻方 #include<stdio.h> void f1(int n)//奇数 { int i,a[30][30];//a[j][k] int j=0,k=(n-1)/2; for(i=1;i<=n*n;i++) { a[j][k]=i; if(i%n==0)j++; else { if(j!=0)j--; else j=n-1; if(k!=(n-1))k++; else k=0; } } for(j=0;j<n;j++) { for(k=0;k<n;k++) printf("%d ",a[j][k]); printf("\n"); } } void f2(int n)//双偶 { int i=1,j,k,a[30][30],temp;//a[j][k] for(j=0;j<n;j++) { for(k=0;k<n;k++) { a[j][k]=i; i++; } } for(j=0;j<n/2;j++) { for(k=n/4;k<n/4*3;k++) { temp=a[j][k]; a[j][k]=a[n-1-j][k]; a[n-1-j][k]=temp; } } for(j=n/4+1;j<=n/4*3;j++) { for(k=0;j<n/2;j++) { temp=a[j][k]; a[j][k]=a[j][n-1-k]; a[j][n-1-k]=temp; } } for(j=0;j<n;j++) { for(k=0;k<n;k++) printf("%d ",a[j][k]); printf("\n"); } } void f3(int n)//单偶 { int i,temp,a[30][30];//a[j][k] int m=(n-2)/4; int j=0,k=(n/2-1)/2; for(i=1;i<=n*n/4;i++)//FuZhi { a[j][k]=i; if(i%(n/2)==0)j++; else { if(j!=0)j--; else j=n/2-1; j%=(n/2); if(k!=(n/2-1))k++; else k=0; k%=(n/2); } } for(j=0;j<n/2;j++) { for(k=0;k<n/2;k++) { a[j+n/2][k+n/2]=a[j][k]+n*n/4; a[j][k+n/2]=a[j][k]+n*n/2; a[j+n/2][k]=a[j][k]+n*n*3/4; } } for(j=0;j<n/2;j++)//ac { if(j==(n-2)/4) { for(k=((n/2)-1)/2;k<(n/2-1)/2+m;k++) { temp=a[j][k]; a[j][k]=a[j+n/2][k]; a[j+n/2][k]=temp; } } else { for(k=0;k<m;k++) { temp=a[j][k]; a[j][k]=a[j+n/2][k]; a[j+n/2][k]=temp; } } } for(j=0;j<n/2;j++)//bd { for(k=n*3/4;k>n*3/4-(m-1);k--) { temp=a[j][k]; a[j][k]=a[j+n/2][k]; a[j+n/2][k]=temp; } } for(j=0;j<n;j++)//output { for(k=0;k<n;k++) printf("%d ",a[j][k]); printf("\n"); } } int main() { int n; while(scanf("%d",&n)!=EOF) { if(n%2==1)f1(n); else if(n%4==0) f2(n); else f3(n); } return 0; }
written by Sneexy
思路参考:
日志标题:《魔方阵算法及C语言实现》
日志链接:http://furzoom.com/magic-square/
博客名称:枫竹梦
下面这种方法来实现对奇幻方的处理更灵活(对应替换代码f1)
相关文章推荐
- eclipse maven plugin 插件 安装 和 配置
- Python装饰器入门学习教程(九步学习)
- Python每天必学之bytes字节
- Python正则获取、过滤或者替换HTML标签的方法
- Python3实现Web网页图片下载
- 详解Python网络爬虫功能的基本写法
- python生成验证码图片代码分享
- 实例详解PHP中html word 互转的方法
- java 的Calendar (日历)类
- 【嘉兴东臣php】php
- 注解驱动的 Spring cache 缓存介绍
- java日志分开打印
- 用70行代码实现日志分析程序-python
- php7编译swoole
- springtxadvice事务配置
- Spring@Autowired注解与自动装配
- Spring 使用注解方式进行事务管理
- Go学习 数组和切片
- Java发邮件-QQ服务器认证
- Java工具类--读取Properties文件