博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[uva] 639 Don't Get Rooked
阅读量:4920 次
发布时间:2019-06-11

本文共 1573 字,大约阅读时间需要 5 分钟。

好几天没刷题, 罪过= =看推理动漫, 玩编程游戏去了= =

又是简单回溯, 注意和8皇后的区别.

1 #include 
2 #include
3 4 using namespace std; 5 6 #define MAX_SIZE 10 7 int gn = 0; 8 char gmap[MAX_SIZE][MAX_SIZE] = {
0}; 9 int gmax = 0;10 11 void dfs(int cur, int num) {12 if (cur == gn * gn) {13 if (num > gmax) {14 gmax = num;15 }16 return;17 }18 int x = cur / gn;19 int y = cur % gn;20 int flagx = 0;21 for (int i = x - 1; i >= 0; --i) if (gmap[i][y] != 'X') {22 if (gmap[i][y] == 'O') {23 flagx = 1;24 break;25 }26 } else {27 break;28 }29 int flagy = 0;30 for (int i = y - 1; i >= 0; --i) if (gmap[x][i] != 'X') {31 if (gmap[x][i] == 'O') {32 flagy = 1;33 break;34 }35 } else {36 break;37 }38 if (!flagx && !flagy && gmap[x][y] != 'X') {39 gmap[x][y] = 'O';40 dfs(cur + 1, num + 1);41 gmap[x][y] = '.';42 dfs(cur + 1, num);43 } else {44 dfs(cur + 1, num);45 }46 }47 48 int main(int argc, const char * argv[])49 {50 while (scanf("%d\n", &gn)) {51 if (gn == 0) {52 break;53 }54 gmax = 0;55 for (int i = 0; i < gn; ++i) {56 for (int j = 0; j < gn; ++j) {57 scanf("%c", &gmap[i][j]);58 }59 getchar();60 }61 dfs(0, 0);62 printf("%d\n", gmax);63 }64 return 0;65 }

 

转载于:https://www.cnblogs.com/NextLife/p/3484743.html

你可能感兴趣的文章
Oracle 11g: Flashback Data Archive
查看>>
MVC路由配置例
查看>>
某大型银行深化系统之十七:性能设计之二
查看>>
linux mysql-server can't find mysql_config
查看>>
php script 的生命周期
查看>>
Python的类(class)
查看>>
MFC启动和关闭线程
查看>>
JQuery EasyUI datagrid pageNumber 分页 请求/加载 两次
查看>>
.NET里面 abstract class和Interface有什么区别以及用法的展现?
查看>>
redis的数据持久化再讲 关于redisAOF RDB工作原理
查看>>
Docker官方tomcat镜像的使用
查看>>
3、DOM操作
查看>>
html自定义checkbox、radio、select —— checkbox、radio篇
查看>>
iDevice取证的一大突破
查看>>
java初学者笔记总结day4
查看>>
java泛型
查看>>
【优先队列】-HDU4546比赛难度
查看>>
操作系统简介
查看>>
正向代理--反向代理
查看>>
JavaScript实现多栏目切换效果
查看>>