uva 11520 Fill the Square
https://vjudge.net/problem/UVA-11520
题意:
给出一个n * n规模的网格,其中有些格子填充了大写字母,有些格子是空的。现在要把剩下的格子全部填充上大些字母,要求相邻的格子的字母不能相同(相邻的格子为有公共边的格子),并且填充完之后字典序最小,字典序是行优先。
思路:
把周围用过的字母统计一下,之后吧没用过的最小的给它填上就ok。
QAQ,因为忘记这个格子没有填充过才能填充,所以wa了好多发,真不应该!!!切记仔细与专注。
代码:
1 #include <stdio.h> 2 #include <string.h> 3 4 bool a[50]; 5 char b[15][15]; 6 7 int main() 8 { 9 int t; 10 11 scanf("%d",&t); 12 13 int cas = 0; 14 15 while (t--) 16 { 17 int n; 18 19 scanf("%d",&n); 20 21 for (int i = 0;i < n;i++) 22 scanf("%s",b[i]); 23 24 for (int i = 0;i < n;i++) 25 for (int j = 0;j < n;j++) 26 { 27 memset(a,0,sizeof(a)); 28 29 if (b[i][j] != '.') continue; 30 31 if (i - 1 >= 0) 32 { 33 if (b[i-1][j] != '.') 34 { 35 char x = b[i-1][j]; 36 a[x-'A'] = 1; 37 } 38 } 39 if (j - 1 >= 0) 40 { 41 if (b[i][j-1] != '.') 42 { 43 char x = b[i][j-1]; 44 a[x-'A'] = 1; 45 } 46 } 47 if (i + 1 < n) 48 { 49 if (b[i+1][j] != '.') 50 { 51 char x = b[i+1][j]; 52 a[x-'A'] = 1; 53 } 54 } 55 if (j + 1 < n) 56 { 57 if (b[i][j+1] != '.') 58 { 59 char x = b[i][j+1]; 60 a[x-'A'] = 1; 61 } 62 } 63 64 char x; 65 66 for (int k = 0;k <= 'Z' - 'A';k++) 67 { 68 if (!a[k]) 69 { 70 x = 'A' + k; 71 break; 72 } 73 } 74 75 b[i][j] = x; 76 } 77 78 printf("Case %d:\n",++cas); 79 80 81 for (int i = 0;i < n;i++) 82 printf("%s\n",b[i]); 83 } 84 85 return 0; 86 }
康复训练中~欢迎交流!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp