c++debug.求大神指点啊

7-2小明的晚饭(20分)小明最近很用功学习,所以经常忘记吃饭。小明决定给自己放个假去大吃一顿,到了吃饭的地方后,小明陷入了沉思,因为他很纠结不知道吃什么,所以他全都要。... 7-2 小明的晚饭 (20 分)
小明最近很用功学习,所以经常忘记吃饭。小明决定给自己放个假去大吃一顿,到了吃饭的地方后,小明陷入了沉思,因为他很纠结不知道吃什么,所以他全都要。小明的食量是无限的并且是个贪心的人,所以他想吃完自己支付范围内所有最贵的饭。但是他学完习思考不出来该吃啥了,需要你的帮助 (Hint:小明不做其他选择,只要贵的,即使贵的饭吃的少而便宜的饭能吃的多,他也会选择最贵的)

输入格式:
输入一个p表示小明拥有的钱(1<=n<=10000),在输入一个n表示小明有n(1<=n<=100)种选择,接下来的n行,每一行包含一个字符串表示饭店店名和在该饭店吃饭的价格。字符串长度不超过20。

输出格式:
输出小明能够吃到的饭,如果小明什么都吃不起,则输出“chitu”。

输入样例:
10 5
McDonald's 2
KFC 6
Yifan 1
Erfan 3
Sanfan 4
输出样例:
KFC
Sanfan
这是我写的#include<iostream>
#include<string>
#include<string.h>
using namespace std;
struct chifan
{
string name;
int price;

};
chifan input()
{
chifan chi;
cin>>chi.name>>chi.price;
return chi;
}
int main()
{
int q,j,k,p;
chifan h;

int m,n;
cin>>n>>m;
chifan a[100];
for(int i=0;i<m;i++)
a[i]=input();

for(j=0;j<n-1;j++)
{p=j;
for(k=j+1;k<n;k++)
{

if(a[k].price<a[p].price) p=k;

}
if(p!=j)
{h=a[k];a[k]=a[p];a[p]=h;}

}

for(int l=m-1;n>=a[0].price;l--){
if(a[l].price<=n)
{
cout<<a[l].name<<endl;n-a[l].price;}
}
if(n<a[0].price) cout<<"chitu";

return 0;}
展开
 我来答
____酒巷丶
2018-12-16 · 超过14用户采纳过TA的回答
知道答主
回答量:23
采纳率:72%
帮助的人:10.6万
展开全部

这是根据你的代码改的,主要是下面几个点:

  1. 选择排序的时候把n和m的含义弄混了.

  2. 选择排序的时候交换写错了。

  3. 输出答案的时候边界判断错了。

建议你学一下使用快排,速度快还不容易错

来自封江说话风趣的冬天
2018-12-16 · 贡献了超过111个回答
知道答主
回答量:111
采纳率:0%
帮助的人:8.3万
展开全部
不知道i真的不记得就到额就是三个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KTH金来穹
2018-12-16 · 贡献了超过198个回答
知道答主
回答量:198
采纳率:0%
帮助的人:14.3万
展开全部
不会滴啦!看不懂,没学过!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f264b88
2018-12-16 · TA获得超过180个赞
知道答主
回答量:1871
采纳率:12%
帮助的人:87.2万
展开全部
为什么,什么都求大神,自己不去动脑筋
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式