zhouzhouzhou edited 3 年,10 月前
我理解这题是在[单选中最大选项数]和[多选中最大选项数所有组合]选最大,是吗?
但例2就错了, 我输出1022,正确答案是1023
10
M 1
M 9
M 10
M 5
M 2
S 1
S 9
S 1
S 4
S 10
#include<iostream>
using namespace std;
int main()
{
int qn,an,s[11],ans=1,t;
char qt;
cin>>qn;
s[1]=1;
for(int i=2;i<=10;i++)
s[i]=s[i-1]*i;
for(int i=1;i<=qn;i++)
{
cin>>qt>>an;
if(qt=='S') //单选
{
if(ans<an) ans=an;
}
else //多选
{
t=0;
for(int j=1;j<=an;j++)
t=t+s[an]/s[j]/s[an-j];
if(ans<t) ans=t;
}
}
cout<<ans;
return 0;
}
解决了.
犯了2个错误:
1、0的阶乘没有初始化;
2、else 与 最近的 if 配套。该死不死的是,本意最近的if应是else对应的if下语句,因只有一句,没有打{}
include
using namespace std;
int main()
{
int qn,an,s[11],ans=1,t;
char qt;
cin>>qn;
s[0]=1;
for(int i=1;i<=10;i++)
s[i]=s[i-1]*i;
}