黑洞6174怎样通过 matlab编写程序来实现?,1019_黑洞6174

应该是还需要优化的,在此熟悉了 stl 中的sort()的应用,可能内存开销上有点问题,因为开了三个vector.

#include

#include

#include

#include

using namespace std;

//sort 的使用;指向vector 的指针;pow 浮点类型

//注意题意中所有数字都是四位输出,因此输出一定是 数组形式一个个输出而不能是int输出

bool ascComp(int first,int end)

{

return(first > end);

}

bool desComp(int first,int end)

{

return (first < end);

}

void intConvertArray(vector *vector,int num)

{

int temp = num;

for(int i = 3;i >= 0;i--)

{

(*vector).at(3-i) = temp / (pow(10,i));

temp = temp % (int)(pow(10,i));//注意浮点数的问题

}

}

void printVector(vector temp)

{

for(int i = 0;i

cout<

}

int main()

{

int N;

cin >> N;

vector num(4),ascVec,dscVec,*p;

p = #//定义一个指向vector 的指针

intConvertArray(p,N);

//各个数位相等

if(num.at(0) == num.at(1) && num.at(0) == num.at(2) && num.at(0) == num.at(3))

{

cout<

return 0;

}

int diff = 0;

while(diff != 6174)

{

sort(num.begin(),num.begin() + 4,ascComp);

ascVec = num;

int ascNum = 0,desNum = 0;

for(int i = 0;i < 4;i ++)

ascNum += num.at(i) * pow(10,3 - i);

dscVec = num;

for(int i = 0;i < 4;i ++)

desNum += num.at(i) * pow(10,3 - i);

diff = ascNum - desNum;

int diffVec = diff;

intConvertArray(p,diffVec);

printVector(ascVec);

cout<

printVector(dscVec);

cout<

printVector(*p);

cout<

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值