那个高手可一改改这个程序??
我就是想把时间改短一点,那位高手帮帮改一下 就把时间改短一点就可以了??
下面是程序。 谢谢
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <iostream>
using namespace std;
int main()
{
int b,a,e,sum,c,f,g;
cin > > a;
int *pp = new int [a];
for(e = 1;e <= a;e++)
{
cin > > b > > c;
int *p = new int[c];
for( int d = 0;d < c;d++)
cin > > p[d];
for(int s = 0;s < c;s++)
{ f = s;
for(int j = s + 1;j <= c;j++)
if(p[f] < p[j])f = j;
if(s!=f)
{
g = p[s];
p[s] = p[f];
p[f] = g;
}
}
sum=0;
for(int h = 0;h < c; )
{
sum += p[h];
if(sum > = b)
{
pp[e]=h+1;
break;
}
h++;
if(sum < b )
{
pp[e]=0;
}
}
}
for(int i=1;i <=a;i++)
{
if(pp[i] != 0)
{
cout < < "Scenario # " < < i < < ": " < < endl;
cout < < pp[i] < < endl;
cout < < endl;
}
else
{
cout < < "Scenario # " < < i < < ": " < < endl;
cout < < "impossible " < < endl;
cout < < endl;
}
}
system( "pause ");
return 0;
}
------解决方案--------------------放到一个std::vector里,然后用其排序,取最大的来加~
如果你有大量数据,可以考虑数据的情况自己重写最排序算法,不过stl的排序本身就很不错了