PAT乙级1058 选择题 (20 分)
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级1058 选择题 (20 分)相关的知识,希望对你有一定的参考价值。
#include<cstdio>
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct node
{
int score;
int sum;
int k;
char s[10];
}Node[1005]; //正确答案
int n,m;
int cnt[1005];//错误个数
int sum[1005];//总的分数
int main(void)
{
cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>Node[i].score;
cin>>Node[i].sum;
cin>>Node[i].k;
for(int j=0;j<Node[i].k;j++) cin>>Node[i].s[j];
}
string temp; getline(cin,temp);
for(int i=0;i<n;i++)
{
getline(cin,temp);
int t=0;
string c;
for(int j=0;j<temp.size();j++)
{
if(temp[j]>='a'&&temp[j]<='z') c+=temp[j];
if(temp[j]==')')
{
int flag=0;
for(int x=0;x<c.size();x++)
{
for(int y=0;y<Node[t].k;y++)
{
if(c[x]==Node[t].s[y]) flag++;
}
}
if(flag==Node[t].k&&flag==c.size()) sum[i]+=Node[t].score;
else cnt[t]++;
c.clear();
t++;
}
}
}
for(int i=0;i<n;i++) cout<<sum[i]<<endl;
int ans=0;
for(int i=0;i<m;i++) if(cnt[ans]<cnt[i]) ans=i;
if(cnt[ans])
{
cout<<cnt[ans];
for(int i=0;i<m;i++) if(cnt[ans]==cnt[i]) cout<<" "<<i+1;
cout<<endl;
}
else cout<<"Too simple"<<endl;
return 0;
}
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
struct node
{
string s;
int score;
}S[105];
int n,k;
int sum[1005];
int cnt[105];
bool check(string s,int m)
{
int k=0;
for(int i=0;i<s.size();i++)
{
if(S[m].s.find(s[i])==-1) return false;
k++;
}
return k==S[m].s.size();
}
int main(void)
{
cin>>n>>k;
for(int i=0;i<k;i++)
{
int a,t;
cin>>S[i].score>>a>>t;
for(int j=0;j<t;j++)
{
string x; cin>>x;
S[i].s+=x;
}
}
string s; getline(cin,s);
for(int i=0;i<n;i++)
{
getline(cin,s);
int m=0;
for(int j=0;j<s.size();j++)
{
string temp;
while(s[j]!=')')
{
if(s[j]>='a'&&s[j]<='z') temp+=s[j];
j++;
}
if(check(temp,m)) sum[i]+=S[m].score;
else cnt[m]++;
m++;
}
}
for(int i=0;i<n;i++) cout<<sum[i]<<endl;
int ans=0;
for(int i=0;i<k;i++) if(ans<cnt[i]) ans=cnt[i];
if(ans!=0)
{
cout<<ans;
for(int i=0;i<k;i++)
{
if(ans==cnt[i]) cout<<" "<<i+1;
}
}
else cout<<"Too simple"<<endl;
return 0;
}
以上是关于PAT乙级1058 选择题 (20 分)的主要内容,如果未能解决你的问题,请参考以下文章
JAVA1003 我要通过!(20分) PAT乙级 PAT (Basic Level)Practice (中文)
pat 1058 A+B in Hogwarts(20 分)
PAT 甲级 1058 A+B in Hogwarts (20 分) (简单题)