首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

那个高手可一改改这个程序?解决方法

2012-04-09 
那个高手可一改改这个程序??我就是想把时间改短一点,那位高手帮帮改一下就把时间改短一点就可以了??下面是

那个高手可一改改这个程序??
我就是想把时间改短一点,那位高手帮帮改一下   就把时间改短一点就可以了??
                                            下面是程序。   谢谢
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#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的排序本身就很不错了


[解决办法]
这样把,我大致写点点

int iDataEle; // 保存每个输入的数据
std::vector vDataArray; //所有数据的容器
for(size_t nDataCount; nDataCount < nDataMaxSize; ++nDataCount)
{
cin> > iDataEle;
vDataArray.push_back(iDataEle);//装入所有输入的数据
}

std::sort(vDataArray.begin(),vDataArray.end()); //得到一个从小到大的排序,如果你的是作业,老师要说你,自己这里写个排序功能

//从尾巴开始取数据,加到那个要求值,返回个数,加不到返回imp

热点排行