ACM: Gym 100935G Board Game - DFS暴力搜索
Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Description
Statements
Feras bought to his nephew Saleem a new game to help him learning calculating. The game consists of a board with 4 rows and 4 columns with 16 cubes. Every cube has a number from 1 to 16. Let's define the power of a column as the sum of its elements. In the same way, the power of a row is the sum of its elements. Saleem should arrange the cubes in the board such that the power of all columns and all rows are equal. To make the game easier, the nice uncle, Feras, will help him arranging 7 cubes, and Saleem should arrange the rest of the cubes.
Input
Your program will be tested on one or more test cases. The first line of the input will be a single integer T, the number of test cases (1 ≤ T ≤ 100). Then the test cases. Each test case has four lines containing four integers. The j-th number in the i-th line describes the cell (i,j) of the board. If the number is -1 then the cell is empty and you have to fill it, otherwise, uncle Feras has already filled this cell.
Output
For each test case print a line in the following format: "Case c:" where c is the test case number starting from 1 then print the board in four lines every line has four numbers separated by space. If there is more than one solution print the solution that has the smallest order (See the notes below).
Sample Input
1
-1 -1 -1 -1
-1 -1 -1 -1
-1 5 13 12
3 8 9 14
Case 1:
11 6 10 7
16 15 2 1
4 5 13 12
3 8 9 14
Hint
in the sample input there is more than one solution:
Solution1:
16 15 2 1
11 6 10 7
4 5 13 12
3 8 9 14
Solution2:
11 6 10 7
16 15 2 1
4 5 13 12
3 8 9 14
but we select solution2 because it has the smallest order when we write the rows in one line.
Solution1: 16 15 2 1 11 6 10 7 4 5 13 12 3 8 9 14
Solution2: 11 6 10 7 16 15 2 1 4 5 13 12 3 8 9 14
/*/
这个题目和以前做过的一个DFS数独的题目很像,还要更简单; 直接DFS暴力+ 枚举就行了 AC代码:
/*/
#include"algorithm"
#include"iostream"
#include"cstring"
#include"cstdlib"
#include"cstdio"
#include"string"
#include"vector"
#include"queue"
#include"cmath"
using namespace std;
typedef long long LL ;
#define memset(x,y) memset(x,y,sizeof(x))
#define memcpy(x,y) memcpy(x,y,sizeof(x))
const int MX=5; int mps[MX][MX];
int mp[MX][MX];
bool num[20],flag; void init() {
memset(mp,0);
memset(num,0);
memset(mps,0);
flag=0;
} bool check() {
int sum=0;
for(int i=0; i<4; i++) {
sum+=mp[0][i];
for(int j=0; j<4; j++) {
if(mp[i][j]==-1)return 0;
}
}
for(int i=0; i<4; i++) {
if(sum!=mp[0][i]+mp[1][i]+mp[3][i]+mp[2][i])return 0;
if(sum!=mp[i][0]+mp[i][1]+mp[i][2]+mp[i][3])return 0;
}
return 1;
} void DFS(int x,int y) {
if(flag)return ;
if(mps[x][y]==-1) {
for(int i=1; i<=16; i++) {
if(num[i]||flag)continue;
mp[x][y]=i;
num[i]=1;
if(y<3) DFS(x,y+1);
else if(x<3) DFS(x+1,0);
else {
if(check())flag=1;
num[i]=0;
return;
}
num[i]=0;
}
} else {
if(y<3) DFS(x,y+1);
else if(x<3) DFS(x+1,0);
else {
if(check()) flag=1;
return ;
}
}
} int main() {
int T;
scanf("%d",&T);
for(int time=1; time<=T; time++) {
init();
for(int i=0; i<4; i++) {
for(int j=0; j<4; j++) {
scanf("%d",&mps[i][j]);
if(mps[i][j]!=-1) {
num[mps[i][j]]=1;
}
}
}
memcpy(mp,mps);
DFS(0,0);
printf("Case %d:\n",time);
for(int i=0; i<4; i++) {
for(int j=0; j<4; j++) {
printf("%d%c",mp[i][j],j==3?'\n':' ');
}
}
}
return 0;
}
ACM: Gym 100935G Board Game - DFS暴力搜索的更多相关文章
- hdu 1427 速算24点 dfs暴力搜索
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem De ...
- [HDU 1427]速度计算24点(DFS暴力搜索)
主题连接: pid=1427">http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路:简单的DFS.dfs(sum,next,p)表 ...
- UVALive 5107 dfs暴力搜索
题目链接:A hard Aoshu Problem DES:给三个字符串,包含的字符是A-E范围内的.长度都不超过8.每个字符可以而且只可以匹配一个数字.两个字符不能匹配相同的数字.前两个式子之间可以 ...
- UVALive 5844 dfs暴力搜索
题目链接:UVAive 5844 Leet DES:大意是给出两个字符串.第一个字符串里的字符可以由1-k个字符代替.问这两个字符串是不是相等.因为1<=k<=3.而且第一个字符串长度小于 ...
- 洛谷P1019——单词接龙(DFS暴力搜索)
https://www.luogu.org/problem/show?pid=1019#sub 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母, ...
- poj 3050 Hopscotch DFS+暴力搜索+set容器
Hopscotch Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2774 Accepted: 1940 Description ...
- ACM 暴力搜索题 题目整理
UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...
- ACM: FZU 2107 Hua Rong Dao - DFS - 暴力
FZU 2107 Hua Rong Dao Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- Gym 100650H Two Ends DFS+记忆化搜索
Problem H: Two EndsIn the two-player game “Two Ends”, an even number of cards is laid out in a row. ...
随机推荐
- 怎么把MVC的Controller拆分写到别的类库
以为很难…… 其实直接继承Controller 并且按MVC_Controllser规则命名. 然后网站项目引用该项目即可.
- 微信token验证失败的解决方法
一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否正确.如果确定配置没有问题,请按下面的方法检 ...
- poj 2104:K-th Number(划分树,经典题)
K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 35653 Accepted: 11382 Ca ...
- Thinkphp 解决写入配置文件的方法
在/Application/Common/Common创建function.php,然后添加以下代码: <?php /** * [writeArr 写入配置文件方法] * @param [typ ...
- phpcms V9实现wap上一篇、下一篇功能
在phpcms\modules\wap\index.php里面,搜索上面这句 if(!$r || $r['status'] != 99) showmessage(L('info_does_not_ex ...
- QQ互联OAuth
/** * QQ互联 oauth * @author dyllen * */ class Oauth { //取Authorization Code Url const PC_CODE_URL = ' ...
- 【leetcode】Candy
题目描述: There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- Uncaught ReferenceError: console is not defined
今天写javascript代码遇到了这个极其神奇的问题,居然报错说内置的console不存在,而且后来我换成了alert也不行.照例说这些都是js代码内置的东西不应该出现这种错误.不过百度之发现貌似没 ...
- hdu 4412 2012杭州赛区网络赛 期望
虽然dp方程很好写,就是这个期望不知道怎么求,昨晚的BC也是 题目问题抽象之后为:在一个x坐标轴上有N个点,每个点上有一个概率值,可以修M个工作站, 求怎样安排这M个工作站的位置,使得这N个点都走到工 ...
- ASP.NET 5探险(8):利用中间件、TagHelper来在MVC 6中实现Captcha
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于ASP.NET 5及MVC 6是一个微软全新重新的Web开发平台,之前一些现有的验 ...