虽然是水题,一开始也错了好多次,真是坑啊!
#include<iostream>
using namespace std;
char a[101];
char c[26];
bool index[26];
void create()
{
int i,j;
memset(index,0,sizeof(index));
for(i=0;i<strlen(a);i++)
{
index[a[i]-'A']=1;
c[i]=a[i];
}
for(i=25,j=0;i>=strlen(a);i--,j++)
{
while(index[j]) j++;
c[i]=j+'A';
}
}
int Get(char x)
{
int i;
for(i=0;i<26;i++)
if(c[i]==x)
return i;
}
int main()
{
char d[10001];
int i;
gets(a);
create();
while(gets(d))
{
i=0;
while(d[i]!='\0')
{
if(d[i]>='A' && d[i]<='Z')
putchar(Get(d[i])+'A');
else if(d[i]>='a' && d[i]<='z')
putchar(Get(d[i]-32)+'a');
else
putchar(d[i]);
i++;
}
cout<<endl;
}
return 0;
}HDU ACM 1591 Encoded Love-letter
原文地址:http://blog.csdn.net/a809146548/article/details/45292915