标题:一道简单的中南大学研究生复试机试题求解
只看楼主
Xpj
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-6-21
结帖率:0
 问题点数:0 回复次数:1 
一道简单的中南大学研究生复试机试题求解
答案错误50%我那种情况没想到能告知一下吗?


1208: 选球问题
时间限制: 1 Sec  内存限制: 128 MB
提交: 77  解决: 18
[提交] [状态] [讨论版] [命题人:test]

题目描述
PIPI现有a-z共26种球,权值从a到z依次为1,2,3...26,现从已有的n个球中选出固定k个从左到右排列,要求右边的球权值至少比左边大2,在给定n和k的情况下,求最小权重和。

输入
输入包含多组数据。
每组数据第一行包含两个整数 n,k (1<=k<=n<=50)
第二行是一个长度为n的字符串。

输出
对于每组样例,输出最小权重和。若不存在输出-1.

样例输入
5 3
xyabd

样例输出
29

来源/分类
2019年中南大学研究生复试机试题  


我的代码:
#include<iostream>
#include<string>
#include<algorithm>
//1 2 4 24 25
using namespace std;
int main(){
    int n,i,s,k,t,p;
    string str;
    int a[51]={0};
    while(cin>>k>>n){
        if(k>n){
            t=k;
            k=n;
            n=t;
        }
        s=0;
        p=0;
        cin>>str;
        for(i=0;i<n;i++)
            a[i]=str[i]-'0'-48;
        sort(a,a+n);
        s+=a[0];
        if(n==1)
            p=1;
        for(i=1;i<n;i++){
            if(a[i]-a[0]>2){
                a[0]=a[i];
                s+=a[i];
                p=1;
            }
        }
        if(p)
            cout<<s<<endl;
        else
            cout<<"-1"<<endl;
    }
    return 0;
}
搜索更多相关主题的帖子: 大学 研究生 试题 输出 str 
2019-06-23 16:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
不要重复发帖 https://bbs.bccn.net/thread-495443-1-1.html

str[i]-'0'-48 是什么意思?
a[i]-a[0]>2 不是说“至少比左边大2”吗,你这是至少大3了吧
另外,k 根本就没用到吧
2019-06-24 08:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495444-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.071523 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved