一道简单的acm题,我自己实现了,但是提交说Time Limit Exceeded,急急急!!!

dj080808 2008-12-06 02:00:24
求高手指教...送上50分
Input:
有多组测试数据。每组测试数据的第一行为两个整数tot和n,分别表示妈妈身上所有的钱和书店里书的本数。接下来的一行有n个整数,分别表示每本书的价格。
Output:
对于每组册书数据都输出DK最多能得到几本书。

我的代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int money,books,price,temp;

vector<int> list;
while(cin>>money>>books)
{
for(int i=0;i<books;i++){
cin>>price;
list.push_back(price);
}
for(int j=0;j<books;j++)
for(int k=j;k<books;k++){
if(list[j]>list[k]){
temp=list[j];
list[j]=list[k];
list[k]=temp;
}
}
int sum=0,number=0;
while(sum<=money&&number<books){
sum+=list[number];
number++;
}
list.resize(0);
if(sum>money)
cout<<number-1<<endl;
else cout<<number<<endl;
}
return 0;
}
...全文
190 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
freenux 2008-12-06
  • 打赏
  • 举报
回复
把下面的排序语句换成
 sort(list.begin(), list.end());
就可以了。
for(int j=0;j <books;j++) 
for(int k=j;k <books;k++){
if(list[j]>list[k]){
temp=list[j];
list[j]=list[k];
list[k]=temp;
}
}
freenux 2008-12-06
  • 打赏
  • 举报
回复
用qsort,或者用vector自带的排序都比自己写的好!
freenux 2008-12-06
  • 打赏
  • 举报
回复
为什么不用快速排序算法
ayw215 2008-12-06
  • 打赏
  • 举报
回复

for(int j=0;j <books;j++)
for(int k=j;k <books;k++){
if(list[j]>list[k]){
temp=list[j];
list[j]=list[k];
list[k]=temp;
}
}

交换排序太慢了。。。
你都用stl了干嘛不用它的sort呢?
dj080808 2008-12-06
  • 打赏
  • 举报
回复
请高手指教一下啊
最好教下代码。。。
PeterGhostWolf 2008-12-06
  • 打赏
  • 举报
回复
用快速排序吧.
估计是你的交换排序复杂度高,超时掉了.
太乙 2008-12-06
  • 打赏
  • 举报
回复
背包问题的变种??~

lz代码估计不行吧!
PeterGhostWolf 2008-12-06
  • 打赏
  • 举报
回复
如果我没有理解错的话就是排个序然后从最小的开始找?
你用快速排序吧,O(nlogn)的比O(n^2)的快些.
PeterGhostWolf 2008-12-06
  • 打赏
  • 举报
回复
如果我没有理解错的话就是排个序然后从最小的开始找?
你用快速排序吧,O(nlogn)的比O(n^2)的快些.
lc19890326 2008-12-06
  • 打赏
  • 举报
回复
纯支持ACMer
确实做题最痛苦的不是做不出 而是超时超内存
dj080808 2008-12-06
  • 打赏
  • 举报
回复
还有个引子:
Description:
DK小朋友平时很喜欢看漫画,有一次跟他妈妈去逛街,看见一家专卖漫画的书店。里面的漫画都是DK小朋友喜欢的类型,所以他缠着妈妈想要买下所有的书,但是妈妈钱带的不多,不可能买下所有DK喜欢的书,可是每个妈妈都想要自己的孩子开心,所以她打算有身上所有的钱去买尽可能多的书给DK。
PeterGhostWolf 2008-12-06
  • 打赏
  • 举报
回复
完整的题目?

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧