fred_chan_yz 2013-12-08 02:58 采纳率: 0%
浏览 862

庞果的字符串完美度的问题,用C++编的

题目:
我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同,
而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。
现在给定一个字符串,输出它的最大可能的完美度。
例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。

疑问:
程序里面我注意到存在其它字符还有大小写的问题,可提交后测试用例还是不对,不知道是哪里错了,还请帮忙指出
bool IsRange(char a)
{
if(('a'<=a&&a<='z')||('A'<=a&&a<='Z'))
return 1;
return 0;

}

bool IsEqual(char a,char b)
{
int num='A'-'a';
if(a-b==num||b-a==num)
return 1;
else
return 0;
}

void sort(int *a) //出现的次数升序
{
while(*a!=0)
{
int *p=a;
while(*p!=0)
{
p++;
if(*p>*a)
{
int temp;
temp=*a;
*a=*p;
*p=temp;

}
}
a++;
}
}

bool IsApp(char *q,char a) //1-存在,0—不存在
{
while(*q!='\0')
{
if(*q==a||IsEqual(*q,a))
return 1;
q++;
}
return 0;
}

int perfect(const string &s)
{
int count,sum=0,i=0,j=0;
int WordAppNub[26]={0}; //存放字母出现的次数
char WordApp[26]={'0'}; //存放出现过的字母
int Num[26]; //完美值1—26
const char *p=&s[0];
for(int i=26;i>0;i--)
{
Num [26-i]=i;
}

while(*p!='\0')
{
    count=0;
    while((*p!='\0')&&(IsApp (WordApp ,*p)||(!IsRange (*p))))
    {
        p++; 
    }
    if(*p!='\0'&&(!IsApp (WordApp ,*p)))
    {
    const char *q=p;
    while(*q!='\0')
    {
        if(*p==*q||IsEqual (*p,*q))
        {
            count++;
            q++;
        } 
        else
            q++;
     }
        WordAppNub[i++]=count;
        WordApp[j++]=*p;
        p++;
    }
}

sort(WordAppNub);
for(int i=0;i<26;i++)
{
    sum+=WordAppNub [i]*Num[i];
}   
/*for(int i=0;i<26;i++)
{
    int WordAppNub[26]={0};    
    char WordApp[26]={'0'}; 
}*/
return sum;

}

int _tmain(int argc, _TCHAR* argv[])
{
int SumNub;
const string a="24a5b6e 5d8d c7A24 44F8F6D42f33f42D99tF45f24C56f58fe86BF25ad25B36db42b";
SumNub=perfect (a);
cout<<SumNub<<endl;
system("pause");
return 0;
}

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 17:59
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥20 jupyter保存图像功能的实现
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键