反幻方 题目
来源:互联网 发布:手机直播间源码 编辑:程序博客网 时间:2024/06/03 11:35
反幻方
我国古籍很早就记载着
2 9 4
7 5 3
6 1 8
这是一个三阶幻方。每行每列以及对角线上的数字相加都相等。
下面考虑一个相反的问题。
可不可以用 1~9 的数字填入九宫格。
使得:每行每列每个对角线上的数字和都互不相等呢?
这应该能做到。
比如:
9 1 2
8 4 3
7 5 6
你的任务是搜索所有的三阶反幻方。并统计出一共有多少种。
旋转或镜像算同一种。
比如:
9 1 2
8 4 3
7 5 6
7 8 9
5 4 1
6 3 2
2 1 9
3 4 8
6 5 7
等都算作同一种情况。
请提交三阶反幻方一共多少种。这是一个整数,不要填写任何多余内容。
——————————-宝宝是分割线,以下是代码———————————————————-
答案—————–3120小弟水平有限,方法比较粗略,还望各路大神指教。。。捂住脸(逃 #include<stdio.h> int fhuanf[10]={0}; //非幻方 int sum=0; //个数 int xsum[8]={0}; //8条线和 int xsum_ss=0; //线和下标 int is_legal(int xsum[8],int ss) //判断各线和是否存在相等的情况 存在返回0 不存在返回1 { for(int i=0;i<ss;i++) { for(int j=i+1;j<ss;j++) { if(xsum[i]==xsum[j]) return 0; } } return 1; } void create(int n) { if(n==4) { xsum[xsum_ss++]=fhuanf[1]+fhuanf[2]+fhuanf[3]; } if(n==7) { xsum[xsum_ss++]=fhuanf[4]+fhuanf[5]+fhuanf[6]; } if(n==8) { xsum[xsum_ss++]=fhuanf[1]+fhuanf[4]+fhuanf[7]; xsum[xsum_ss++]=fhuanf[3]+fhuanf[5]+fhuanf[7]; } if(n==9) { xsum[xsum_ss++]=fhuanf[2]+fhuanf[5]+fhuanf[8]; } if(n==10) { xsum[xsum_ss++]=fhuanf[7]+fhuanf[8]+fhuanf[9]; xsum[xsum_ss++]=fhuanf[1]+fhuanf[5]+fhuanf[9]; xsum[xsum_ss++]=fhuanf[3]+fhuanf[6]+fhuanf[9]; } if(n>6&&!is_legal(xsum,xsum_ss)) //判断是否合乎要求 { return; } if(n==10) //满足要求 { sum++; return ; } if(n<10) //依次给数组赋值 { for(int i=1;i<10;i++) { int ok=1; for(int j=1;j<n;j++) { if(fhuanf[j]==i) { ok=0;break; } } if(ok) fhuanf[n]=i; else continue; create(n+1); fhuanf[n]=0; if(n==6||n==8||n==3) { xsum_ss--; xsum[xsum_ss]=0; } if(n==7) { xsum_ss-=2; xsum[xsum_ss]=xsum[xsum_ss+1]=0; } if(n==9) { xsum_ss-=3; xsum[xsum_ss]=xsum[xsum_ss+1]=xsum[xsum_ss+2]=0; } } } } int main() { create(1); printf("%d",sum/8); //所有反幻方总数为sum 而每一个矩阵的旋转和镜像有7个 加上本身有8个 所以直接用总数除以8就好了 return 0; }
1 0
- 反幻方 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- 题目
- HDU2881 Jack's struggle (LIS)
- ES6 Javascript
- (11)关卡编辑器之细节列表
- HDU 1259
- 2017年华东师范大学网络赛 E
- 反幻方 题目
- 一文学会用 Tensorflow 搭建神经网络
- 可能每个人的路都不一样,说下我的路吧。
- hdu 3507 Print Article 斜率优化dp
- 关于操作矩阵中索引的技巧(二)
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增“行政区域管理”,同时大批量树采用异步加载
- ShadowBroker释放的NSA工具部分(windows)fb.py复现和中招检查方法(勒索病毒原理)
- 信息系统项目管理师考试法律法规、行业标准、政策资料
- 比特币勒索软件病毒问题,关闭电脑端口