(原创题)九宫格 (搜索+模拟)
来源:互联网 发布:创世数据查询 编辑:程序博客网 时间:2024/05/17 20:02
Problem Description
九宫格大家应该都填过。最简单的,就是将1~9这9个数填入九宫格中,要保证每一行每一列每一斜对角三个数之和都相等。不过,现在如果将数的范围扩大成任意正整数,你能做出来吗?试试看吧!
Input
第一行输入一个正整数T,表示数据组数(1< T<10000);
第二行输入九个正整数,保证每个数据不超过100,并且各不相等;
Output
如果能够满足每一行每一列每一斜对角三个数之和都相等,则输出“Yes”;如果不满足,则输出“No answer!”。
Sample Input
2
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10
Sample Output
Yes
No answer!
可能具有一定处理能力的人才能完全做出来吧。用到搜索和模拟。也是本人比较得意的一个原创题。
#include<iostream>#include<algorithm>#include<cstring>#include<ctime>#include<cstdlib>#include<cstdio>using namespace std;int m,k,blag,vis[10],s[10],d[5];int s2[100005][10];int check() { for(int i=0;i<9;i++) for(int j=0;j<9;j++) for(int p=0;p<9;p++) if(!vis[i]&!vis[j]&&!vis[p]&&s[i]+s[j]+s[p]==m) //未被访问过并且三个数之和为m { d[0]=s[i];d[1]=s[j];d[2]=s[p]; //将三个数提取出来,存放到d[]中 vis[i]=vis[j]=vis[p]=1; //将这三个数做上标记 for(int q=0;q<9;q++) if(s[q]==k-s[i]||s[q]==k-s[j]||s[q]==k-s[p]) //将这三个数对应的数'也做上标记 vis[q]=1; return 1; } return 0;}int judge(){ if(check()==0) //判断这四组数中是否存在任意三组,其中每一组抽出一个数字所构成的三个数能够组成一横排或者一竖排 return 0; int a,b; for(int i=0;i<9;i++) //此时只剩下了一组未标记 if(!vis[i]) a=s[i]; b=k-a; //把它们找出来存放到a,b中 for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { if(i==j) continue; if(d[i]+(k-d[j])+a==m&&(k-d[i])+d[j]+b==m) //最后只需要调整一竖排的顺序,使之满足上下两横排三个数之和也为m即可 return 1; } } return 0;}int main(){ int t; cin>>t; while(t--) { memset(vis,0,sizeof(vis)); for(int i=0;i<9;i++) //输入9个数 { int x; cin>>x; s[i]=x; } sort(s,s+9); //排完序之后第5大的数就是中间的数字 int flag=0; k=s[4]*2; //k为任意两个相对的数之和 共有四组这样的数字 for(int i=0;i<4;i++) if(s[i]+s[8-i]!=k) //如果少于四组则无法填满九宫格 flag=1; if(flag==0) { m=s[4]*3; //m为任意一横排一竖排或者一斜线三个数之和 vis[4]=1; if(judge()) cout<<"Yes"<<endl; else cout<<"No answer!"<<endl; } else cout<<"No answer!"<<endl; } return 0;}
阅读全文
0 0
- (原创题)九宫格 (搜索+模拟)
- hiho 1268 九宫 搜索 模拟
- 历届试题 九宫重排 (搜索+哈希)
- GridView(九宫格)
- 九宫格(三阶幻方)
- jquery模拟九宫格抽检
- 计蒜客蓝桥杯模拟赛 九宫格
- HTTP服务器模拟(原创)
- 蓝桥杯模拟题5 九宫格(暴力求解)
- Android 原创九宫格方块显示控件
- Java基本功练习八(多维数组[二维、三维、模拟评卷系统、九宫格验证])
- 蓝桥杯 历届试题 九宫重排(双向搜索优化)
- 蓝桥杯历届试题——九宫重排(启发式搜索)
- Sudoku(九宫格问题)
- hdu 1426(九宫格)
- 应用管理(九宫格)
- (原创题)解方程 (数学+模拟)
- (原创题) 比大小 (贪心+模拟+分类)
- OpenStack Compute节点切换controller的方法
- Samara University ACM ICPC 2016-2017 Quarterfinal Qualification Contest【8/13】
- 点击弹窗
- 道哥自述:为什么弹性安全网络将诞生最大的人工智能?
- androiddialog大全
- (原创题)九宫格 (搜索+模拟)
- Maven—Eclipse中配置Maven
- javaseday35(方法的调用要用括号 字符的练习 数组的练习)
- Git 生成key 和SSH的两种方式(putty 和android studio)
- 计算机视觉与卷积神经网络
- MP3文件结构(1)
- http与https
- JavaScript继承模式
- 浅析python 中__name__ = '__main__' 的作用