zoukankan      html  css  js  c++  java
  • 回文数字

    我用的是set自增有序造回文数字。

    #include <stdio.h>
    #include <memory.h>
    #include <math.h>
    #include <string>
    #include <string.h>
    #include <vector>
    #include <set>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <map>
    
    #define I scanf
    #define OL puts
    #define O printf
    #define F(a,b,c) for(a=b;a<c;a++)
    #define FF(a,b) for(a=0;a<b;a++)
    #define FG(a,b) for(a=b-1;a>=0;a--)
    #define LEN 3000
    #define MAX 0x06FFFFFF
    #define V vector<int>
    
    using namespace std;
    
    set<string> nums[10];
    
    void configureDigit(int x){
        char ch[2]={0};
        int i;
        if(x==1){
            FF(i,10){
                ch[0]=48+i;
                nums[1].insert(string(ch));
            }
        }else if(x==2){
            FF(i,10){
                ch[0]=48+i;
                nums[2].insert(string(ch)+string(ch));
            }        
        }else{
            set<string>& p=nums[x-2];
            set<string>::iterator it=p.begin();
            while(it!=p.end()){
                string s=*it;
                FF(i,10){
                    ch[0]=48+i;
                    nums[x].insert(string(ch)+s+string(ch));
                }    
                it++;
            }
        }
    }
    
    int eq=60;
    
    bool legal(string& s){
        if(s[0]==48) return 0;
        int i,sum=0;
        FF(i,s.size()) sum+=s[i]-48;
        if(sum!=eq) return 0;
        return 1;
    }
    
    int main(){
        I("%d",&eq);
        int i;
        bool ok=0;
        F(i,1,7) configureDigit(i);
        F(i,5,7){
            set<string>::iterator it=nums[i].begin();
            while(it!=nums[i].end()){
                string s=*it;
                if(legal(s)){
                    puts(s.c_str());
                    ok=1;
                }
                it++;
            }        
        }
        if(!ok) O("-1");
        return 0;
    }
  • 相关阅读:
    类模板机制
    C和C++中const的区别
    bitset
    静态库or动态库?
    多态原理探究
    程序从编译到运行过程
    对象的内存模型
    重载、重写(覆盖)和隐藏
    对继承和派生的理解
    对C++对象的理解
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8653781.html
Copyright © 2011-2022 走看看