uva11520 - Fill the Square
2016-02-02 13:55
513 查看
题意:
给一个n*n的矩阵,含小数点及A-Z的字母,让你使用A-Z的字母填充小数点使得矩阵每个位置的字母与它的上下左右的字母都不相等,且字典序最小,输出填充后的矩阵。
思路:
枚举26个字母A-Z,依次判断是否可以填入矩阵的位置,保证了字典序的最小
代码:
给一个n*n的矩阵,含小数点及A-Z的字母,让你使用A-Z的字母填充小数点使得矩阵每个位置的字母与它的上下左右的字母都不相等,且字典序最小,输出填充后的矩阵。
思路:
枚举26个字母A-Z,依次判断是否可以填入矩阵的位置,保证了字典序的最小
代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int n; char grid[15][15]; int main() { int cas, index=0; scanf("%d", &cas); while (cas--) { scanf("%d", &n); getchar(); memset(grid, '.', sizeof(grid)); int i, j; for (i = 1; i <= n; i++) { for ( j = 1; j <= n; j++) { scanf("%c",&grid[i][j]); } getchar(); } char ch; for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { if (grid[i][j] == '.') { for (ch = 'A'; ch <= 'Z'; ch++) { bool ok = true; if (i > 1 && grid[i - 1][j] == ch) ok = false; if (j > 1 && grid[i][j-1] == ch) ok = false; if (i < n && grid[i +1][j] == ch) ok = false; if (j < n && grid[i][j + 1] == ch) ok = false; if (ok) { grid[i][j] = ch; break; } } } } } printf("Case %d:\n", ++index); for (i = 1; i <= n; i++) { for ( j = 1; j <= n; j++) printf("%c", grid[i][j]); printf("\n"); } } return 0; }
相关文章推荐
- SQL SERVER中强制类型转换cast和convert的区别
- Android-Universal-Image-Loader异步加载图片框架学习研究
- Java class文件分析工具 -- Classpy
- python基础知识学习:列表和元组
- v$log and v$logfile
- Windows2003计划任务设置操作手册
- 263. Ugly Number
- Boost 学习之算法篇 gather
- Mysql主从复制配置笔记
- java 常见异常总结
- CSS:display 和 visibility 的异同
- JavaScript中使用JSON,即JS操作JSON总结
- ELK 作为交换机和路由器日志管理系统的简单实践!
- 三. Redis 主从复制
- 【grunt第一弹】30分钟学会使用grunt打包前端代码
- Android实现获取系统应用列表
- 欧拉回路——邮递员
- 三. Redis 主从复制
- linux设置tomcat、oracle开机启动
- jQuery AjaxUpload 上传图片代码