UVa11520-Fill the Square
2016-09-28 19:36
295 查看
给定一个n*n的方阵要求往里面填充字符使得字典序最小。
暴力搜索,从上到下从左至右选择最小的字符填充即可。
暴力搜索,从上到下从左至右选择最小的字符填充即可。
#include <cstdio> char grid[12][12]; int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, 1, 0, -1}; int n; void Dfs(int x, int y) { if (y >= n) { Dfs(x + 1, 0); return; } if (x > n - 1) { return; } if (grid[x][y] != '.') { Dfs(x, y + 1); return; } for (int i = 0; i < 26; i++) { char ch = 'A' + i; bool ok = true; for (int j = 0; j < 4; j++) { int nx = x + dx[j]; int ny = y + dy[j]; if (nx >= 0 && nx < n && ny >= 0 && ny < n) { if (grid[nx][ny] == ch) { ok = false; break; } } } if (ok) { grid[x][y] = ch; Dfs(x, y + 1); break; } } } int main(int argc, char const *argv[]) { int T; scanf("%d", &T); for (int t = 1; t <= T; t++) { scanf("%d", &n); getchar(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf("%c", &grid[i][j]); } getchar(); } Dfs(0, 0); printf("Case %d:\n", t); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%c", grid[i][j]); } putchar('\n'); } } return 0; }
相关文章推荐
- Android 拦截 LinearLayout RelativeLayout ViewGroup 监听 传递到下面布局
- VR 触摸板模拟上下左右按键
- 很不错的Map工具类
- RE:从零开始的数据结构生活
- 【JZOJ 4799】我的快乐时代
- 列表
- 微信应用号开发必备技能都在这里了啦!
- Linux workqueue工作原理
- Apache默认index页面
- oracle10G/11G官方下载地址集合 直接迅雷下载
- emmet使用简介
- macOS apache配置及开启虚拟服务器的开启,apache开启重写模式
- 什么是SOAP?
- navicat连接oracle数据库ORA-28547:connection to server failed, probable Oracle Net admin error错误,解决方法
- Axure RP 8.0 基础1-10
- Gym 100962A ABBA (高斯消元)
- C# Udp Socket例子 客户端
- 如何生成支付宝RSA密钥
- freemaker学习总结
- vim下各类批量替换