UVA - 11520 Fill the Square 水题
2017-08-09 10:16
393 查看
刚刚10分钟AC的水题
题目已经要求:
1.上下左右各不相同
2.保证解的字典序最小
因此可以想到整个矩阵中最多包含 A B C D E 四个字母,
所以从矩阵 左到右,上到下 枚举就好了
为了简便判断,我们让矩阵存在于 (1,1) - (n,n)之间
ok
题目已经要求:
1.上下左右各不相同
2.保证解的字典序最小
因此可以想到整个矩阵中最多包含 A B C D E 四个字母,
所以从矩阵 左到右,上到下 枚举就好了
为了简便判断,我们让矩阵存在于 (1,1) - (n,n)之间
ok
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<set> #include<stack> #include<queue> #include<algorithm> // cout << " === " << endl; using namespace std; typedef long long ll; const int maxn = 100 + 7, INF = 0x3f3f3f3f, mod = 1e9+7; int T, n; char s[maxn][maxn]; int dx[4] = {0, -1, 0, 1}; int dy[4] = {-1, 0, 1, 0}; void init() { for(int i = 0; i < n+2; ++i) for(int j = 0; j < n+2; ++j) s[i][j] = '.'; for(int i = 1; i <= n; ++i) scanf("%s", s[i]+1); } void solve() { for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { if(s[i][j] != '.') continue; for(char c = 'A'; c <= 'E'; ++c) { int f = 1; for(int k = 0; k < 4; ++k) { if(s[i+dx[k]][j+dy[k]] == c) { f = 0; break; } } if(f) { s[i][j] = c; break; } } } } for(int i = 1; i < n+1; ++i) { for(int j = 1; j < n+1; ++j) putchar(s[i][j]); cout << endl; } } int main() { scanf("%d", &T); int kase = 1; while(T--) { scanf("%d", &n); init(); printf("Case %d:\n", kase++); solve(); } return 0; }
相关文章推荐
- UVA 11520 Fill the Square
- UVa 11520 - Fill the Square (填充正方形)
- UVA - 11520 Fill the Square ( 贪心 )
- uva - 11520 - Fill the Square(贪心、字典序)
- 例题1.14 填充正方形 Fill the Square UVA - 11520 搜索
- uva 11520 Fill the Square(DFS)
- UVa 11520 Fill the Square 填充正方形
- UVa 11520 - Fill the Square(构造法)
- UVa 11520 Fill the Square(枚举)
- uva 11520 - Fill the Square(贪心+枚举)
- UVA 11520 - Fill the Square (暴力)
- uva 11520 - Fill the Square
- uva 11520 Fill the Square(枚举)
- 11520 - Fill the Square (水题)
- UVa 11520 Fill the Square (水题,暴力)
- UVA11520 Fill the Square 枚举
- UVA11520 Fill the Square 枚举
- UVA 11520 Fill the Square
- UVA 11520 Fill the Squre(水题)
- UVa 11520 Fill the Square (贪心&字典序)