小明最近很用功学习,所以经常忘记吃饭。小明决定给自己放个假去大吃一顿,到了吃饭的地方后,小明陷入了沉思,因为他很纠结不知道吃什么,所以他全都要。小明的食量是无限的并且是个贪心的人,所以他想吃完自己支付范围内所有最贵的饭。他从最贵的饭店开始吃,若剩下的钱不足以吃当前最贵的饭店,则往下寻找较贵的饭店。直到钱财为空或者已经吃不起最便宜的饭了。当然小明是个有原则的人,他绝对不会重复吃已经吃过的餐厅。但是他学完习思考不出来该吃啥了,需要你的帮助 (Hint:小明不做其他选择,只要贵的,即使贵的饭吃的少而便宜的饭能吃的多,他也会选择最贵的)
这是我的代码
#include<stdio.h>
struct cf{char name[20];
float dj;};
main()
{struct cf st[100];struct cf sk;int n,j,i,p;
scanf("%d",&n);p=n;
// if(n>=1&&n<=10000) p=n;
// else return -1;
scanf("%d",&n);
for(i=0;i<n;i++)
{scanf("%s",st[i].name);
scanf("%f",&st[i].dj);}
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(st[j].dj<st[j+1].dj) {st[j]=sk;st[j]=st[j+1];st[j+1]=sk;}
if(p<st[n-1].dj) printf("chitu");
for(i=0;i<n;i++)
if(p>=st[i].dj) {p=p-st[i].dj;printf("%s\n",st[i].name);}
}
struct cf {
char name[20];
float dj;
};
int main()
{
struct cf st[100], sk;
int n,j,i,p;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%s",st[i].name);
scanf("%f",&st[i].dj);
}
for(i=0; i<n-1; i++)
for(j=0; j<n-1-i; j++)
if(st[j].dj<st[j+1].dj) {
sk = st[j];
st[j]=st[j+1];
st[j+1]=sk;
}
printf("请输入小明的钱数: ");
scanf("%d", &p);
for(i=0; i<n; i++)
if(p >= st[i].dj) {
p = p - st[i].dj;
printf("%s\n",st[i].name);
}
}
输入格式:输入一个p表示小明拥有的钱(1<=n<=10000),在输入一个n表示小明有n(1<=n<=100)种选择,接下来的n行,每一行包含一个字符串表示饭店店名和在该饭店吃饭的价格。字符串长度不超过20。
输出格式:
输出小明能够吃到的饭,如果小明什么都吃不起,则输出“chitu”。
不能运行求大神帮解