uva 159 wrod crosses
2011-05-14 15:23
281 查看
不用复杂的算法,但是有比较复杂的处理。
#include <cstring> #include <cstdlib> #include <cstdio> #include <cassert> using namespace std; #undef _DEBUG #ifdef _DEBUG #define PRINT_VAR() {/ printf("%3d: p = %x, q = %x/n", __LINE__, p, q);/ } #endif char ans[30][50]; char a[100], b[100], c[100], d[100]; int main() { int cs = 1; while(scanf("%s%s%s%s", a, b, c, d) == 4) { memset(ans, 0, sizeof(ans)); strcpy(ans[10], a); int offset = strlen(a) + 3; strcpy(ans[10] + offset, c); char *p = a; while(*p) { char *q = b - 1; while(*++q && *q != *p) {} if(*q) { int i = 1; char *t = q; while(--t >= b) ans[10 - i++][p - a] = *t; t = q; i = 1; while(*++t) ans[10 + i++][p - a] = *t; break; } #ifdef _DEBUG PRINT_VAR(); #endif ++p; } bool isSolvable = ((*p) ? true : false); p = c; while(*p && isSolvable) { char *q = d - 1; while(*++q && *q != *p) {} if(*q) { int i = 1; char *t = q; while(--t >= d) ans[10 - i++][p - c + offset] = *t; t = q; i = 1; while(*++t) ans[10 + i++][p - c + offset] = *t; break; } #ifdef _DEBUG PRINT_VAR(); #endif ++p; } isSolvable = isSolvable && (*p); if(cs++ != 1) printf("/n"); if(! isSolvable) { printf("Unable to make two crosses/n"); continue; } int r = 0; while(r < 30) { bool lineIsEmpty = true; int c = 0; while(c < 50) { int spaces = 0; while(c < 50 && !ans[r][c]) { ++c; ++spaces; } if(c >= 50) { if(! lineIsEmpty) printf("/n"); ++c; continue; } lineIsEmpty = false; while(spaces-- > 0) #ifdef _DEBUG printf("."); #else printf(" "); #endif printf("%c", ans[r][c]); ++c; } ++r; } } return 0; }
相关文章推荐
- UVA 159 Word Crosses
- 【UVALive 5866】 Robot Arm Planning
- UVA 10453 Make Palindrome
- uva 10499 The Land of Justice
- uva 11269 - Setting Problems(greedy)
- UVA 662 Fast Food 区间DP
- UVALive 6665 Dragon&#226;s Cruller --BFS,类八数码问题
- uva 11992 Fast Matrix Operations (线段树区间更新)
- UVA - 10271 Chopsticks DP
- UVa 455 Periodic Strings【最小循环子串】
- UVA 10200 Prime Tim
- Uva12627 Erratic Expansion【分治】【例题8-12】
- uva 12545 Bits Equalizer(贪心)
- 并查集·UVA 1665·Islands
- uva 10562 - Undraw the Trees
- UVA 10236 The Fibonacci Primes
- UVa 10837 A Research Problem 欧拉函数
- UVa 11922 Permutation Transformer splay 把序列翻转后放到结尾
- uva 10375 (唯一分解定理+筛素数)
- [Uva 10085] The most distant state (BFS)