ACM
2009. 6. 2. 21:04
반응형
I got accept from Judge Server.
----------------------------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
#include <stdio.h> #include <string.h> #define MAX_CHAR 85 #define MAX_LINE 101 #define PLAIN_TEXT 44 #define ALPHABET 26 char replaceTable[ALPHABET]; char plainText[PLAIN_TEXT] = "the quick brown fox jumps over the lazy dog"; int makeReplaceTable(char inputText[PLAIN_TEXT]); void changeInputLine(char inputText[]); void initTable(void); int main(void) { int caseNum, lineNum=0, i=0, success=0, size=0; char inputLine[MAX_LINE][MAX_CHAR]; scanf("%d\n", &caseNum); do { lineNum=0; success=0; caseNum--; while( gets(inputLine[lineNum]) && strlen(inputLine[lineNum]) ) { lineNum++; } if( lineNum >= MAX_LINE ) { lineNum = MAX_LINE-1; } for(i=0; i<lineNum; i++) { if( strlen(inputLine[i]) == strlen(plainText) ) { if( makeReplaceTable(inputLine[i]) ) { success = 1; break; } } } if( !success ) { printf("%s\n", "No solution."); } else { for(i=0; i<lineNum; i++) { changeInputLine(inputLine[i]); printf("%s\n", inputLine[i]); } } if( caseNum != 0 ) printf("\n"); } while(caseNum>0); return 0; } int makeReplaceTable(char inputText[PLAIN_TEXT]) { int i, c; initTable(); for(i=0; i<PLAIN_TEXT; i++) { if( inputText[i] >= 'a' && inputText[i] <= 'z' ) { c = inputText[i]-'a'; if( replaceTable[c] == '\0' ) { replaceTable[c] = plainText[i]; } else { if ( replaceTable[c] != plainText[i] ) { return 0; } } } } for(i=0; i<ALPHABET; i++) { if( replaceTable[i] < 'a' || replaceTable[i] > 'z' ) { return 0; } } return 1; } void changeInputLine(char inputText[]) { int index, i; int size = strlen(inputText); for(i=0; i<size; i++) { if( inputText[i] != ' ' ) { if( inputText[i] >= 'a' && inputText[i] <= 'z' ) { index = inputText[i]-'a'; inputText[i] = replaceTable[index]; } } } } void initTable(void) { int i; for(i=0; i<ALPHABET; i++) { replaceTable[i] = '\0'; } } |
반응형
'ACM' 카테고리의 다른 글
[Accept] 10006 Carmichael Numbers (0) | 2009.06.02 |
---|---|
[Accept] 10110 Light, more light (0) | 2009.06.02 |
[Accept] 10132 File Fragmentation (0) | 2009.06.02 |
[Accept] 10099 - The Tourist Guide (0) | 2009.06.02 |
[Accept] 10099 - The Tourist Guide (0) | 2009.06.02 |