Wisconsin Squares [USACO]
这个也不记得了,反正不难
/* ID: zhangyc1 LANG: C++ TASK: wissqu */ #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> using namespace std;char arrMatrix[4][5]; bool arrNewCow[4][4], bFound = false; int arrCowNum[5] = {3, 3, 3, 4, 3}; int nValid = 0; struct SRes {char ch;int nRow, nCol; }; SRes arrRes[16];void prepairData() {for (int i = 0; i < 4; i++){scanf("%s", arrMatrix[i]);}memset(arrNewCow, 0, sizeof(arrNewCow)); }bool CheckPut(char ch, int nRow, int nCol) {int nTop = nRow > 0 ? nRow - 1 : 0;int nBot = nRow < 3 ? nRow + 1 : 3;int nLft = nCol > 0 ? nCol - 1 : 0;int nRht = nCol < 3 ? nCol + 1 : 3;for (int i = nTop; i <= nBot; i++){for (int j = nLft; j <= nRht; j++){if (arrMatrix[i][j] == ch)return false;}}return true; }void dfs(char ch, int nDepth, int nRow, int nCol) {arrRes[nDepth].ch = ch;arrRes[nDepth].nRow = nRow;arrRes[nDepth].nCol = nCol;char chOld = arrMatrix[nRow][nCol];arrMatrix[nRow][nCol] = ch;arrNewCow[nRow][nCol] = true;arrCowNum[ch - 'A']--;if (nDepth == 15){if (!bFound){bFound = true;for (int i = 0; i < 16; i++)printf("%c %d %d\n", arrRes[i].ch, arrRes[i].nRow + 1, arrRes[i].nCol + 1);}nValid++;}else{for (int k = 0; k < 5; k++){if (arrCowNum[k] > 0){char chCur = k + 'A';for (int i = 0; i < 4; i++){for (int j = 0; j < 4; j++){if (!arrNewCow[i][j] && CheckPut(chCur, i, j))dfs(chCur, nDepth + 1, i, j);}}}}}arrMatrix[nRow][nCol] = chOld;arrNewCow[nRow][nCol] = false;arrCowNum[ch - 'A']++; }void process() {for (int i = 0; i < 4; i++){for (int j = 0; j < 4; j++){if (!arrNewCow[i][j] && CheckPut('D', i, j))dfs('D', 0, i, j);}}printf("%d\n", nValid); }int main(){FILE *streamIn = freopen("wissqu.in","r",stdin);FILE *streamOut = freopen("wissqu.out","w",stdout);prepairData();process();fclose(streamIn);fclose(streamOut);return 0; }
转载于:https://www.cnblogs.com/doublemystery/archive/2013/05/09/3068683.html
Wisconsin Squares [USACO]相关推荐
- USACO SEC.1.2 No.4 Palindromic Squares
题意:输入一个进制b([2,20]),确定从[1,300]中哪些数的平方在该进制下是回文数 解法:核心部分是将十进制数转换为任意进制数,除x取余,逆序排列 /* ID: lsswxr1 PROG: p ...
- usaco Magic Squares
我搜了一下康拓展开定理结果下面解释就是用这题的做例子.稍微改一下就行了.vis不仅记录了他是否被便利过了还可以顺便用来计数不过注意当m==0是vis[0]==0但是contor数为0的数列就是1234 ...
- usaco Palindromic Squares
<pre name="code" class="cpp"><span style="font-family: Arial, Helv ...
- USACO Palindromic Squares 回文平方数
原题自行百度. 这个题其实没啥难的,数据也很水,直接暴力即可. 唯一的关键在于转换进制,这个貌似跟数学联系比较紧.十进制数转换为n进制,方法就是原数除以进制,记下余数和商,用商接着除.直到商是零,然后 ...
- USACO 3.2 Magic Squares 魔板
题目大意: 在成功地发明了魔方之后,拉比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8种颜色用前8 ...
- USACO 3.2 Magic Squares 魔板 (BFS-HASH)
题意: 给定1234/换行/5678,用下面几种方法变到制定的数 "A":交换上下两行: "B":将最右边的一列插入最左边: "C":中央四 ...
- USACO The castle 小白代码-供参考(会不断更改代码)
USACO The Castle.哇,这道题最后一问困扰了我好久,我刚开始以为拆墙的优先级是:以墙的朝向为优先级基准:E>N>S>W (这是错的❌,大错特错) 所以就一直就做不出来! ...
- jzoj 1594: 【USACO】The Chivalrous Cow(骑士牛)( 待加入)
1594: [USACO] 题目描述 Farmer John traded one of his cows for a cow that Farmer Don called 'The Knight' ...
- 魔板 Magic Squares(bfs优化)
[USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题 ...
最新文章
- ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡
- query 防止ajax重复提交
- ajax传formdata类型的数据_JQuery.Ajax()的data参数类型
- eclipse安装m2e.sourcelookup插件debug第三方源码(spring)
- MSP430G2553需要注意的一些参数
- MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)(转)
- Makefile 打印变量的值
- 华科10年保送生计算机考研复试机试
- 2017.3.31 棋盘制作 失败总结
- js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global)...
- python 并发_Python bin()
- linux运维实战案例,Linux运维实战练习案例20151220~20151231
- 百旺智能编码_【百旺开票软件税控盘版】百旺金税盘开票软件下载 v2020 最新版本-趣致软件园...
- RFID技术与应用 复习用
- DirectX 下载地址
- 高效能人士的七个习惯(二)七个习惯概论
- 计算机二级考风考纪主题班会,计算机二级C语言上机题库及答案(100套).doc
- 安装linux系统提示acpi,ACPI引起linux系统无故重启
- 乒乓球重拍轻拍怎么选
- 暴风集团入多个被执行人名单-千氪