应该是还需要优化的,在此熟悉了 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;
}