同学发过来个文件,让我帮他做几个题目的,就做了下,贴在这里
题目:
描述:
输入一串数字,找到其中包含的最大递增数。递增数是指相邻的数位从小到大排列的数字。如: 2895345323,递增数有:289,345,23, 那么最大的递减数为345。 输入: 输入一串数字,默认这串数字是正确的,即里面不含有字符/空格等情况 输出: 输出最大递增数 样例输入: 123526897215 样例输出: 2689
1: #include
2: #include
3: #include
4: #include
5: #include
6: #include
7: using namespace std;
8: int main()
9: {
10: mapm;
11: for(int i=0;i<10;i++) //字符映射数字
12: {
13:
14: m['0'+i] = i;
15: }
16:
17: string num; //存放输入字符串
18: cin>>num;
19: int length = num.length();
20: if(length==1)
21: {
22: cout<<
23: return 0;
24: }
25:
26: int max = 0; //用于存放目前最大递增数
27: string current = "";
28: current = current + num[0];//current
29: int temp = 0; //用于标记当前递增数是否扫描结束,1表示结束
30: for(int j =1;j
31: {
32: int sum = 0;
33:
34: if(m[num[j]]>m[num[j-1]])
35: current = current + num[j];
36: else
37: temp=1;
38:
39: if(temp == 1 || j == length-1) //只有当前递增数扫描结束或到尾部才开始计算当前递增数的值
40: {
41: int current_length = current.length();
42: for(int k=0;k
43: {
44: sum += m[current[k]]*pow(10,current_length-k-1); //存入目前的递增数
45: }
46: //cout<<
47: if(max < sum)
48: max = sum; //存入目前最大递增数
49: current = num[j];
50: temp=0;
51: }
52: }
53: cout<<
54: return 0;
55: }