本文主要是介绍ZOJ-1009,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最开始以为很复杂呢,认真想了一下,就是理清逻辑!不涉及时间空间越界问题~虽然调了好一会儿,但最后还是做出来了~而且是一次过,太难得了!分享一下~
#include <iostream> #include <string> using namespace std; int main() {int i,j,m,n,cases=1;int A[26],B[26],C[26];while(cin >> m && m){char c;for(i=0;i<m;i++){cin >> c;A[i]=c-'A'-i;}for(i=0;i<m;i++){cin >> c;B[i]=c-'A'-i;}for(i=0;i<m;i++){cin >> c;C[i]=c-'A'-i;}cin >> n;if(cases!=1)cout << endl;cout << "Enigma " << cases << ":" << endl;cases++;while(n--){string str;cin >> str;int stepA=0,stepB=0,stepC=0;for(i=0;i<str.length();i++){for(j=0;j<m;j++){int a=(j+A[((j-stepA)+m)%m]+m)%m;int b=(a+B[((a-stepB)+m)%m]+m)%m;int c=(b+C[((b-stepC)+m)%m]+m)%m;if(c==str[i]-'A'){ cout << (char)('a'+j);break;}}stepA++;if(stepA==m){stepA=0;stepB++;if(stepB==m){stepB=0;stepC++;if(stepC==m)stepC=0;}}}cout << endl;}} }
这篇关于ZOJ-1009的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!