基础语言-题目57(6174问题)

来源:互联网 发布:中华网络一条龙公司 编辑:程序博客网 时间:2024/04/29 16:09

我觉得这道题目用到的思想就是,一个atoi转换函数,还有就是解决问题的递归思想,解决了前一个问题,后面的就可以递归调用这种解决方法.

还有就是模拟解决方法的能力,以后的题目,你不可能一看就知道怎么做的,也不可能确定自己的方法就是最简单的方法,但是你可以用笨笨的方法解决,

这也是一种能力,就是实现自己思想,将自己的思想转换成代码的能力!

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <string>#include <algorithm>using namespace std;const int sta = '0';bool cmp1 (char a, char b){return a > b;}bool cmp2 (char a, char b){return a < b;}void Solve (char *str, int cnt){int flag = atoi (str);char pat1[11];char pat2[11];int i;for (i = 0; i < 4; i++){pat1[i] = pat2[i] = str[i];}pat1[i] = pat2[i] = '\0';sort (pat1, pat1 + 4, cmp1);sort (pat2, pat2 + 4, cmp2);int temp = atoi (pat1) - atoi (pat2);if (temp == flag){cnt ++;cout << cnt << endl;return;}else{str[0] = temp / 1000 + sta;str[1] = temp % 1000 / 100 + sta;str[2] = temp % 1000 % 100 / 10 + sta;str[3] = temp % 1000 % 100 % 10 + sta;str[4] = '\0';Solve (str, cnt + 1);}}int main (){char str[11];int N;cin >> N;while (N--){cin >> str;Solve (str, 0);}return 0;}