zoukankan      html  css  js  c++  java
  • 6174问题

    假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并且继续操作。例如:从1234出发,依次可得到4321-1234=3087   8730-378=8352    8532-2358=6174。有趣的是  7641-1467=6174.回到了它自己.

    输入一个n位数,输出操作序列,直到出现循环为止(即新得到的数曾经得到过).输入保证在循环之前最多只会产生1000个整数.

    样例输入:1234
    样例输出:1234->3087->8352->6174->6174

    #include "stdafx.h"
    #include<iostream>
    #include<string>
    #include<sstream>
    #include<vector>
    using namespace std;
    int getMax(string inData);
    string get_next(string input);
    int getMin(string inData);
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        vector<string> inData;
        string input;
        cin>>input;
        
        string res=input;
        while(find(inData.begin(),inData.end(),res)==inData.end()){
            inData.push_back(res);
            cout<<res<<"->";
            res=get_next(res);
        }
        cout<<inData[inData.size()-1]<<endl;
        return 0;
    }
    string get_next(string input)
    {
        int max = getMax(input);
        int min = getMin(input);
        ostringstream oss;
        oss<<max-min;
        string result = oss.str();
        return result;
    
    }
    int getMin(string inData)
    {
        string data =inData;
        int len = data.size();
        for(int i=0;i!=len;i++)
        {
            for(int j =i+1 ;j!=len;++j)
            {
                if(data[i]>data[j])
                {
                    int temp = data[j];
                    data[j]=data[i];
                    data[i]=temp;
                }
            }
        }
        return atoi(data.c_str());
    }
    
    int getMax(string inData)
    {
        string data =inData;
        int len = data.size();
        for(int i=0;i!=len;i++)
        {
            for(int j =i+1 ;j!=len;++j)
            {
                if(data[i]<data[j])
                {
                    int temp = data[j];
                    data[j]=data[i];
                    data[i]=temp;
                }
            }
        }
        return atoi(data.c_str());
    }
  • 相关阅读:
    Python中替换的三种方法
    深入浅出:分布式和集群--转自码农翻身微信公众号
    如何把GitHub中的开源项目导入到Eclipse
    Socket Tools的使用
    LoadRunner 测试Socket接口函数说明
    Apache Jemeter 开发插件
    netstat 查看连接数
    redis缓存机制【转载】
    内存溢出OOM
    transform-translate位移
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3519760.html
Copyright © 2011-2022 走看看