回 帖 发 新 帖 刷新版面

主题:以位数之和为依照的排序问题

#pragma hdrstop
#include<iostream>
#include<algorithm>
#include<vector>
#include<conio>
using namespace std;

//---------------------------------------------------------------------------
int bitSum(int a);
bool lessThanBitSum(int a,int b){return bitSum(a)<bitSum(b); }
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
  int a[]={33,61,12,19,14,71,78,59};
  vector<int> aa(a,a+8);
  sort(aa.begin(),aa.end(),lessThanBitSum);
  for(int i=0;i<aa.size();++i)
    cout<<aa[i]<<" ";
    getch();
  cout<<"\n";
        return 0;
}
//---------------------------------------------------------------------------
int bitSum(int a){
  int sum=0;
  for(int x=a;x;x/10) sum+=x%10;
  return sum;
}
//-------------------------------------------------------------
此程序是实现一各位数字之和的大小来决定排序顺序的,编译没错,但没有输出结果,请高手帮忙指点!
(我觉得应该是sort(aa.begin(),aa.end(),lessThanBitSum);这地方的问题 但不知怎么改)

回复列表 (共2个回复)

沙发

错在bitSum:

for (int x=a; x; x/10)
应该是:

for (int x=a; x; x/=10)

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.会打字.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ909065437

我来回复

您尚未登录,请登录后再回复。点此登录或注册