ブルーブリッジカップテーマ練習のデジタルブラックホール

2985 ワード

タイトルの説明:
任意の5桁の数、例えば:34256、その数字を乱して、並べ直して、最大の数:65432、最小の数23456を得ることができます.この2つの数字の差を求めて、得ます:41976、この数字を再び上記の手順を繰り返します(5桁未満であれば前に0を足します).このように往復すると、数字はある循環圏(デジタルブラックホールと呼ばれます).例えば、さっきの数字は:[82962,75933,63954,61974]に落ちます.このループ.プログラムを作成して、5桁の可能なすべてのループを見つけて、出力してください.各ループは1行を占めています.このうち5桁がすべて同じであればループは[0]であり,これは考慮しなくてもよい.ループリングの出力フォーマットのシミュレーション:[82962,75933,63954,61974]数値の前後順序は考慮しなくてもよい.
卵が少し痛い--
よし...C++は久しぶりです
//
//  main.cpp
//  buleBirdgeGamesTest
//
//  Created by kino on 14-3-17.
//
//

#include 
#include 

using namespace std;

#define SWAP(a,b) int temp = a;a = b;b = temp;
#define NOTFOUND -1

/**
 *      
 *
 *  @param arr      
 *  @param len      
 *  @param isDesc     
 */
void bubbleSort(int arr[], int len, bool isDesc){
    for (int i = 0; i < len; i++) {
        for (int j = 0; j < len - i - 1; j++) {
            if (isDesc) {
                if (arr[j]>arr[j+1]) {
                    SWAP(arr[j],arr[j+1])
                }
            }else{
                if (arr[j] array, int a){
    vector::iterator it ;
    int i = 0;
    for (it = array.begin(); it != array.end(); it++,i++) {
        if (*it == a) {
            return i;
        }
    }
    return NOTFOUND;
}

/**
 *                     
 *
 *  @return
 */
int isArrrayExist(vector> listArray, vector aListArray){
    vector>::iterator it ;
    int number = aListArray[0];
    for (it = listArray.begin(); it != listArray.end(); it++) {
        if (isNumberExist((vector(*it)),number) != NOTFOUND) {
            return 1;
        }
    }
    return NOTFOUND;
}

/**
 *      
 *
 *  @param numArray
 */
void printResult(vector> numArray){
    vector>::iterator it;
    for (it = numArray.begin(); it!= numArray.end(); it++) {
        vector::iterator itt;
        cout <> numArray;
    vector tempArr;
    for (int i = 10000; i < 99999 ; i++) {
        
        if (i % 11111 == 0) continue;
        int next = i;
        for (int j = 0 ; j < 50 ; j++) {
            
            next = findNum(next);
            
            int startIdx = isNumberExist(tempArr, next);
            tempArr.push_back(next);
            if (startIdx != NOTFOUND) {
                vector snipArray;
                for (int k = startIdx; k < tempArr.size() - 1; k++) {
                    snipArray.push_back(tempArr[k]);
                }
                if (isArrrayExist(numArray, snipArray) == NOTFOUND) {
                    numArray.push_back(snipArray);
                }
                break;
            }
        }
        tempArr.clear();
    }
    
    printResult(numArray);
    
    return 0;
}