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;
}
原文地址:https://www.cnblogs.com/XDJjy/p/3108577.html