hdu 2526 浪漫手机
题意:
上一行的3个音符决定下一行的1个音符
题解:
查找与替换
选择的输出的保存方式
#include<stdio.h> #include<string.h> #include<vector> #include<map> #include<string> #include<iostream> #include<algorithm> using namespace std; string s1,s2; map<string,char>ma; char a[5]; int main() { int _case,m; int x,y; int i,j,k; scanf("%d",&_case); while(_case--) { scanf("%d",&m); getchar(); ma.clear(); for(i=0; i<8; i++) { memset(a,0,sizeof(a)); scanf("%s %c",a,&y); //x=0; /*for(j=0;j<strlen(a);j++) { x=x*10+a[j]-'0'; }*/ //m[x]=y; //m.insert(make_pair(x,y)); ma[a]=y; } getchar(); s1.clear(); s2.clear(); cin>>s1; cout<<s1<<endl; s1.insert(s1.begin(),'0'); s1.push_back('0'); //cout<<s1<<endl; for(x=1; x<m; x++) { if(x&1) { for(i=0; i<s1.size()-2; i++) { memset(a,0,sizeof(a)); for(j=i,k=0; j<i+3; j++,k++) { a[k]=s1[j]; } //cout<<a;//<<endl map<string,char>::iterator it=ma.find(a); s2+=it->second; printf("%c",it->second); } s1.clear(); s2.insert(s2.begin(),'0'); s2.push_back('0'); } else { for(i=0; i<s2.size()-2; i++) { memset(a,0,sizeof(a)); for(j=i,k=0; j<i+3; j++,k++) { a[k]=s2[j]; } //cout<<a;//<<endl map<string,char>::iterator it=ma.find(a); s1+=it->second; printf("%c",it->second); } s2.clear(); s1.insert(s1.begin(),'0'); s1.push_back('0'); } printf("\n"); } } return 0; }