一道简单的中南大学研究生复试机试题求解
答案错误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;
}