0
已解决
李牧之
新手光能
新手光能
点击参加
本人(蒟蒻)在洛谷中建了一个比赛,题目完全原创,请各位大佬前来参加。
第一名将获得80酷町豆,如果加团团队还有永久管理员(除非你乱搞,要不然不会撤)。
第一名我将在洛谷私信TA
李牧之在2018-07-18 21:36:23追加了内容
请参加的大佬来着报个到
李牧之在2018-07-19 14:15:59追加了内容
比赛已经结束,题解:
第一题
这一题是最经典的0-1背包问题,核心代码如下:
for(int i=1;i<=k;i++)
for(int x=n;x>=h[i];x--) if (f[x-h[i]]+m[i]>f[x]) f[x]=f[x-h[i]]+m[i];
cout<<f[n];
第二题
这一题是一道排序题,较为麻烦,主要就是如何判断他的名字属于哪一种类型。
判断函数如下:
int check(string s){
if (s[0]>='0'&&s[0]<='9'){
for(int i=1;i<=s.size()-1;i++) if (!(s[i]>='0'&&s[i]<='9')){
return 4;
}
return 2;
}
if ((s[0]>='a'&&s[0]<='z')||(s[0]>='A'&&s[0]<='Z')){
for(int i=1;i<=s.size()-1;i++) if (!((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))){
return 4;
}
return 3;
}
if (!(s[0]>='0'&&s[0]<='9')&&!(s[0]>='a'&&s[0]<='z')&&!(s[0]>='A'&&s[0]<='Z')){
for(int i=1;i<=s.size()-1;i++) if ((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){
return 4;
}
return 1;
}
}
判断思路:
先判断字符串的第一位是那种类型,咱往后判断,如果后面的字符与第一个字符类型不同,就返回他是混搭型名字,如果遍历完了,返回相对应的类型。
使用字符串数组储存,主函数排序代码如下:
for(int i=1;i<=n-1;i++){
for(int j=i+1;j<=n;j++){
if (check(name[i])>check(name[j])){
string s1;
s1=name[i];
name[i]=name[j];
name[j]=s1;
}
else if (check(name[i])==check(name[j])){
if (name[i]>name[j]){
string s1;
s1=name[i];
name[i]=name[j];
name[j]=s1;
}
}
}
}
0
0
0
0
0
0
0
0
郑怡翔
初级天翼
初级天翼
已加
郑怡翔在2018-07-19 13:29:52追加了内容
参赛码?
郑怡翔在2018-07-19 13:32:38追加了内容
参赛码看到了,我太傻了,刚刚没看到
0
0
0