编程之美第1题,真心表示玩不转

来源:互联网 发布:网络教育毕业证怎么拿 编辑:程序博客网 时间:2024/05/02 01:23
#include <iostream>
#include <fstream>
#include <string.h>
#include <sstream>

using namespace std;

int main(int argc,char *argv[])
{
int T;
cin>>T;
ostringstream* os=new ostringstream[T];
char* index=NULL;
   char* indexx=NULL;
char* index2=NULL;
int caseNo=0;

while(T!=0)
{
int M;
int N;
cin>>M>>N;  

   string* str=new string[2*N];

for(int i=0;i<2*N;i=i+2) 
{
  string x1,x2;
 cin>>x1>>x2;
     str[i]=x1;
      str[i+1]=x2;    
}


char Mystring[100];
getchar();
 cin.getline(Mystring,100);


        indexx=Mystring;  
int num=0;
   while(*indexx!=' ')
{
  indexx++;
  if(*indexx==' ')  { num++; indexx++;}
  if(*indexx==0)  { num++; break;}
}
 indexx=Mystring;
 string *mystring=new string[num];
 int count1=0;
 int count2=0;


     for(int ii=0;ii<num;ii++)
 {
     while(*indexx!=' ')
 {
if(*indexx=='\0') break;
    indexx++;
count2++;

 }


char xxx1[20];
memcpy(xxx1,Mystring+count1,count2-count1);   
xxx1[count2-count1]='\0';


            mystring[ii]=xxx1;  
            if(*indexx=='\0')  break;  //结束for语句
++count2;
count1=count2;
indexx++;
 }
        
   os[caseNo]<<"case #"<<caseNo+1<<":";


bool find=false;
for(int m=0;m<num;m++)
{
for(int nTimes=1;nTimes<=M-1;++nTimes)
{
find=false;
   for(int n=0;n<=N-1;++n)
   {  
 if(mystring[m]==str[2*n])
    { mystring[m]=str[2*n+1]; find=true; break;}
    }

if(!find) break;
}
os[caseNo]<<mystring[m]<<" ";
}
cout<<os[caseNo].str()<<endl;
    delete [] mystring; mystring=NULL;
delete [] str;  str=NULL;
T--;
caseNo++;
}
return 0;
}
原创粉丝点击