为什么RE啊,有大佬帮忙看看嘛,超级感谢!

P1603 斯诺登的密码

丸子粥 @ 2019-08-01 19:14:36

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;

string s[25]={"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"};
int ss[25]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int a[6],k=1,kk=0;
int main()
{
        string sentence;
        getline(cin,sentence);
        transform(sentence.begin(),sentence.end(),sentence.begin(),::tolower);//转换为小写
        for(int i=0; i<sentence.size(); i++)
        {
                if(sentence[i]=='.')//已经查找结束
                        break;
                if(sentence[i]==' ')
                {
                        for(int j=0; j<20; j++)//查找该单词是否是数字
                        {
                                if(sentence.substr(i-k-1,k)==s[j])//是数字就对应转换
                                {
                                        a[kk]=ss[j];//转换为数字
                                        kk++;
                                        k=1;
                                        break;
                                }
                        }
                }
                k++;
        }
        sort(a,a+kk);//从小到大排序
        for(int i=0; i<kk; i++)//输出
                if(a[i]!=0)
                {
                        if(a[i]<10)
                                cout<<0<<a[i];
                        else
                                cout<<a[i];
                }
        cout<<endl;
        return 0;
}

by 木木! @ 2019-08-01 19:20:41

@丸子粥 第一次循环

(sentence.substr(i-k-1,k)->(sentence.substr(0-0-1,k)->(sentence.substr(-1,k)

哦豁,完蛋


by AlgoEmperor @ 2019-08-01 19:20:47

  1. a有可能炸掉
  2. getline不好

by 丸子粥 @ 2019-08-01 19:23:27

@Ofnoname cin不能输入空格啊 我太难了


by 丸子粥 @ 2019-08-01 19:23:52

@木木! 欧欧 我改改


by 丸子粥 @ 2019-08-01 19:31:35

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;

string s[25]={"zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"};
int ss[25]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int a[20],k=1,kk=0,kongge=0;
int main()
{
        string sentence;
        getline(cin,sentence);
        transform(sentence.begin(),sentence.end(),sentence.begin(),::tolower);//转换为小写
        for(int i=0; i<sentence.size(); i++)
        {
                if(sentence[i]=='.') //已经查找结束
                        break;
                if(sentence[i]==' ')
                {
                        kongge++;
                        for(int j=0; j<20; j++)//查找该单词是否是数字
                        {
                                if(kongge==1)
                                {
                                        if(sentence.substr(0,k)==s[j])//是数字就对应转换
                                        {
                                                a[kk]=ss[j];//转换为数字
                                                kk++;
                                                k=1;
                                                break;
                                        }
                                }
                                else
                                {
                                        if(sentence.substr(i-k-1,k)==s[j])//是数字就对应转换
                                        {
                                                a[kk]=ss[j];//转换为数字
                                                kk++;
                                                k=1;
                                                break;
                                        }
                                }
                        }
                }
                k++;
        }
        sort(a,a+kk);//从小到大排序
        for(int i=0; i<kk; i++) //输出
                if(a[i]!=0)
                {
                        if(a[i]<10)
                                cout<<0<<a[i];
                        else
                                cout<<a[i];
                }
        cout<<endl;
        return 0;
}

=================================== 改成这样了 但是还是不对 但是结果还是跟原来一样的


by gx123 @ 2019-08-12 12:54:42

最好改成long long


by gx123 @ 2019-08-12 12:55:12

我就是用int然后就80


by jijidawang @ 2019-12-07 17:31:39

开头去0


|