J
来源:互联网 发布:淘宝客服转售后话术 编辑:程序博客网 时间:2024/04/27 15:40
FAQ | About | Discuss
题意:
把输入的数各个位上的数重新排列,最大数减最小数到6174结束,输出 所有的差,中间用空格分开,然后输出所有的差的个数
分析:
递归,
代码:
#include<bits/stdc++.h>using namespace std;int a[4],p=0;int comp(int a,int b){return a>b;}int Do(){ int i,s=0; for(i=0;i<4;i++) s=a[i]+s*10; return s;}void Vp(){ int s,f,i; sort(a,a+4,comp); s=Do(); sort(a,a+4); f=Do(); s=s-f; if(s==6174){ cout<<s<<" "; p++; return ; } cout<<s<<" "; p++; for(i=0;i<4;i++,s/=10) a[i]=s%10; Vp(); return ;}int main(){ int n,i; while(cin>>n) { p=0; for(i=0;i<4;i++,n/=10) a[i]=n%10; Vp(); cout<<endl<<p<<endl; }}
感受:就是注意空格,最后一个后面也要跟空格。。。容易忘了
0 0