UVa 843 Crypt Kicker
来源:互联网 发布:海马软件删不掉 编辑:程序博客网 时间:2024/05/17 07:56
#include <stdio.h>#include <string.h>char Keys[1000][16];char Words[40][16];char Cipher[26];char Trys[26];int KeyNum;int WordNum;int exists(char *string, int size){ int i; for(i=0; i<size; i++) if(strcmp(Words[i],string)==0) return 1; return 0;}int compareStructure(char* a, char* b){ int i,j; int length = strlen(a); if(length == 1) return 1; for (i=1; i<length; i++) { if(a[i]!=a[i-1] && b[i]==b[i-1]) return 0; if(a[i]==a[i-1] && b[i]!=b[i-1]) return 0; for (j=0; j<i; j++) { if(a[j]==a[i] && b[j]!=b[i]) return 0; if(a[j]!=a[i] && b[j]==b[i]) return 0; if(a[j]==a[i] && b[j]==b[i]) break; } } return 1;}int backtrack(int index){ char cipherTemp[27]; char tryTemp[27]; int length = strlen(Words[index]); int i,j,k,ok; if(index == WordNum) return 1; strcpy(cipherTemp, Cipher); strcpy(tryTemp, Trys); for (i=0; i<KeyNum; i++) { if(length != strlen(Keys[i])) continue; ok = 1; if (compareStructure(Keys[i],Words[index])) { for (j=0; j<length; j++) { k = Words[index][j]-'a'; if (Cipher[k]=='*') if (Trys[Keys[i][j]-'a']=='0') { Cipher[k] = Keys[i][j]; Trys[Keys[i][j]-'a'] = '1'; } else ok = 0; else { if(Cipher[k] != Keys[i][j]) ok = 0; } } if (ok && backtrack(index+1)) return 1; } strcpy(Cipher,cipherTemp); strcpy(Trys,tryTemp); } return 0;}int main(){ int i,j; char text[80]; int length; char temp[16]; scanf("%d", &KeyNum); for (i=0; i<KeyNum; i++) scanf("%s", Keys[i]); getchar(); while(gets(text)!=NULL) { if(!strcmp(text,"")) continue; length = strlen(text); for(i=0,WordNum=0; i<=length; i++) { j=0; while(text[i]!=' ' && i<length) temp[j++] = text[i++]; temp[j] = '\0'; if(exists(temp,WordNum)==0) { strcpy(Words[WordNum], temp); WordNum++; } } for(i=0; i<26; i++) { Cipher[i] = '*'; Trys[i] = '0'; } backtrack(0); for(i=0; i<length; i++) { printf("%c",(text[i]!=' ')?Cipher[text[i]-'a']:' '); } printf("\n"); } return 0;}
0 0
- uva 843 Crypt Kicker
- uva 843 Crypt Kicker
- UVa 843 Crypt Kicker
- UVa OJ 843 - Crypt Kicker
- UVa Problem Solution: 843 - Crypt Kicker
- UVa Problem 843 Crypt Kicker (解密)
- uva-850-Crypt Kicker II
- UVa 850 Crypt Kicker II
- uva-850-Crypt Kicker II
- UVa Problem Solution: 850 - Crypt Kicker II
- Uva OJ 850 - Crypt Kicker II
- UVa Problem 850 Crypt Kicker II (解密 II)
- uva_850 - Crypt Kicker II
- 110204 Crypt Kicker
- 110304 Crypt Kicker II
- zoj 1838 Crypt Kicker II
- ZOJ 1838 Crypt Kicker II
- 2.8.4 解密 Crypt Kicker
- MFC自动识别串口
- 九度 1050 哈工大 2010 复试上机
- 用原生js实现jquery ajax
- POJ2653 Pick-up sticks
- 简单使用:git下载、修改和上传
- UVa 843 Crypt Kicker
- sqlserver,oracle,mysql等的driver驱动,url
- Uva1468 Restaurant
- 金山面试CDN
- repo之变型记
- java反射机制和动态代理
- 黑马程序员_Java基础[12]_继承
- codeforces 4B Before an Exam
- Apache安全和强化的十三个技巧