| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
1171:为什用网络上的IOI 95 上的数据来测试都过了,在这里却wa了?错在哪里呢?#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#include <string>
using namespace std;
int keyboard[30];
int main()
{
keyboard[0] = 2;
keyboard[1] = 5;
keyboard[2] = 4;
keyboard[3] = 4;
keyboard[4] = 1;
keyboard[5] = 6;
keyboard[6] = 5;
keyboard[7] = 5;
keyboard[8] = 1;
keyboard[9] = 7;
keyboard[10] = 6;
keyboard[11] = 3;
keyboard[12] = 5;
keyboard[13] = 2;
keyboard[14] = 3;
keyboard[15] = 5;
keyboard[16] = 7;
keyboard[17] = 2;
keyboard[18] = 1;
keyboard[19] = 2;
keyboard[20] = 4;
keyboard[21] = 6;
keyboard[22] = 6;
keyboard[23] = 7;
keyboard[24] = 5;
keyboard[25] = 7;
char collected[9];
int num[30];
int copy[30];
vector<string> vecTmp;
int i;
for(i = 0;i < 30;i++)
{
num[i] = 0;
}
scanf("%s",collected);
int slen = strlen(collected);
for(i = 0;i < slen;i++)
{
num[collected[i] - 'a'] += 1;
copy[collected[i] - 'a'] = num[collected[i] - 'a'];
}
int max(0);
char str[10];
// char result[10];
// char rsl[10];
int tmp[30];
while(scanf("%s",str))
{
int bIsChs = false;
int sum(0);
if(strcmp(str,".") == 0){break;}
int len = strlen(str);
for(i = 0;i < len;i++)
{
if(copy[str[i] - 'a']-- > 0){sum += keyboard[str[i]-'a'];}
else{sum = 0;break;}
}
if(i >= len){bIsChs = true;}
///////////////////////////////////////////////////////////////////////////////////////
vector<string>::iterator iter;
int t_s = 0;
int m = 0;
string t_str;
for(iter = vecTmp.begin();iter != vecTmp.end();iter++)
{
t_s = 0;
for(i = 0;i < 30;i++)
{
tmp[i] = copy[i];
}
string t = (*iter);
len = t.length();
for(i = 0;i < len;i++)
{
if(tmp[t[i] - 'a']-- > 0){t_s += keyboard[t[i] - 'a'];}
else{t_s = 0;break;}
}
if(t_s > m){m = t_s;t_str = t;}
}
sum += m;
//////////////////////////////////////////////////////////////////////////////////////
if(bIsChs){vecTmp.push_back(str);}
if(sum > max){max = sum;/*strcpy(result,str);strcpy(rsl,t_str.c_str());*/}
for(i = 0;i < slen;i++)
{
copy[collected[i] - 'a'] = num[collected[i] - 'a'];
}
}
printf("%d\n",max);
// printf("%s\n",result);
// printf("%s\n",rsl);
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator