青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::

2。算法來源與互聯網

組合算法  
  本程序的思路是開一個數組,其下標表示1到m個數,數組元素的值為1表示其下標  
  代表的數被選中,為0則沒選中。    
  首先初始化,將數組前n個元素置1,表示第一個組合為前n個數。    
  然后從左到右掃描數組元素值的“10”組合,找到第一個“10”組合后將其變為  
  “01”組合,同時將其左邊的所有“1”全部移動到數組的最左端。    
  當第一個“1”移動到數組的m-n的位置,即n個“1”全部移動到最右端時,就得  
  到了最后一個組合。    
  例如求5中選3的組合:    
  1   1   1   0   0   //1,2,3    
  1   1   0   1   0   //1,2,4    
  1   0   1   1   0   //1,3,4    
  0   1   1   1   0   //2,3,4    
  1   1   0   0   1   //1,2,5    
  1   0   1   0   1   //1,3,5    
  0   1   1   0   1   //2,3,5    
  1   0   0   1   1   //1,4,5    
  0   1   0   1   1   //2,4,5    
  0   0   1   1   1   //3,4,5  

全排列算法  
   
  從1到N,輸出全排列,共N!條。  
  分析:用N進制的方法吧。設一個N個單元的數組,對第一個單元做加一操作,滿N進  
  一。每加一次一就判斷一下各位數組單元有無重復,有則再轉回去做加一操作,沒  
  有則說明得到了一個排列方案。

#ifndef COMBINATORY_H
#define COMBINATORY_H

#include 
<iostream>
#include 
<cstring>

class Combinatory {
public:
    Combinatory(
const char *chars, size_t n) {
        set(chars, n);
    }

    
    
void parse() {
        
if (!isValid) {
            
return;
        }

        count 
= 0;
        
while (true{
            
++count;
            printResult();
            
            size_t first10 
= findFirst10();
            
if (first10 == END) {
                
break;
            }

            array[first10] 
= 0;
            array[first10 
+ 1= 1;
            
            moveAll1OfFirst10ToLeft(first10);
        }

        std::cout 
<< "There are " << count << " Combinaory." << std::endl;
    }

    
    
void set(const char *chars, size_t n) {
        
this->= strlen(chars);
        
this->= n;
        
this->count = 0;
        
this->isValid = true;
        
        
if (n > m) {
            isValid 
= false;
            
return;
        }

        
        
this->chars = new char[m + 1];
        strcpy(
this->chars, chars);
        
        
this->array = new int[m];
        memset(array, 
0, m * sizeof(int));
        
for (size_t i = 0; i < n; ++i) {
            array[i] 
= 1;
        }

    }

    
private:
    
enum condition {END = 8888888};
    size_t m, n; 
// How many combinatory with n elements are there in m elements 
    size_t count;
    bool isValid;
    
char *chars;
    
int *array;

    
int findFirst10() {
        
for (size_t i = 0; i < m - 1++i) {
            
if (array[i] == 1 && array[i + 1== 0{
                
return i;
            }

        }

        
        
return END;
    }

    
    
void moveAll1OfFirst10ToLeft(size_t pos) {
        size_t index 
= 0;
        
for (size_t i = 0; i < pos; ++i) {
            
if (array[i] == 1 && i == index) {
                
++index;
            }
 else if (array[i] == 1{
                array[index
++= 1;
                array[i] 
= 0;
            }

        }

    }

    
    
void printResult() {
        
if (n == 0{
            
for (size_t i = 0; i < m; ++i) {
                std::cout 
<< chars[i] << " ";
            }

            std::cout 
<< std::endl;
            
return;
        }

        
        
for (size_t i = 0; i < m; ++i) {
            
if (array[i] == 1{
                std::cout 
<< chars[i] << " ";
            }

        }

        std::cout 
<< std::endl;
    }

}
;

#endif 

//int main() {
//    Combinatory c("ABCDE", 0);
//    c.parse();
//    
//    c.set("ABCDE", 1);
//    c.parse();
//    
//    c.set("ABCDE", 2);
//    c.parse();
//    
//    c.set("ABCDE", 3);
//    c.parse();
//    
//    c.set("ABCDE", 4);
//    c.parse();
//    
//    c.set("ABCDE", 5);
//    c.parse();
//    
//    return EXIT_SUCCESS;
//}

// 求排列代碼

#ifndef ARRANGEMENT_H
#define ARRANGEMENT_H

#include 
<iostream>
#include 
<vector>
#include 
<algorithm>
#include 
<cstdlib>

class Arrangement {
public:
    Arrangement(
const char *chars) {
        set(chars);
    }

    
    
void set(const char *chars) {
        
this->isValid = true;
        
        
if (0 == chars) {
            
this->isValid = false;
            
return;
        }

        
        
this->length = strlen(chars);
        
this->chars = new char[this->length + 1];
        strcpy(
this->chars, chars);
        
        
this->array = new int[length];
        
this->tempArray = new int[length];
        
for (size_t i = 0; i < length; ++i) {
            
this->array[i] = length - i - 1;
        }

        
        
        times 
= 0;
    }

    
    
void parse() {
        times 
= 0;
        
        
while (!end()) {
            
if (isResult()) {
                
++times;
                printResult();
            }

            
            size_t carray 
= 0;
            size_t index 
= 0;
            
do {
                carray 
= (array[index] + 1/ length;
                array[index] 
= (array[index] + 1% length;
                
                
if (++index == length) {
                    
break;
                }

            }
 while (carray != 0);
        }

        
        std::cout 
<< "There ard " << times << " Arrangement." << std::endl;
    }

    
private:
    size_t length;
    size_t times;
    bool isValid;
    
char *chars;
    
int *array;
    
int *tempArray;
    
    
static int compare(const void *a, const void *b) {
        
return *((int*)a) - *((int*)b);
    }

    
    bool isResult() 
{
        memcpy(tempArray, array, length 
* sizeof(int));
        qsort(tempArray, length, sizeof(
int), Arrangement::compare);
        
        
for (size_t i = 0; i < length - 1++i) {
            
if (tempArray[i] == tempArray[i + 1]) {
                
return false;
            }

        }

        
        
return true;
    }

    
    
void printResult() {
        
if (!isResult()) {
            
return;
        }

        
        
for (size_t i = 0; i < length; ++i) {
            std::cout 
<< array[i] << " ";
        }

        std::cout 
<< std::endl;
    }

    
    bool end() 
{
        
for (size_t i = 0; i < length; ++i) {
            
if (array[i] != 0{
                
return false;
            }

        }

        
        
return true;
    }

    
}
;


#endif 
// ARRANGEMENT_H

//int main() {
//    Arrangement a("ABCD");
//    a.parse();
//    
//    a.set("123456");
//    a.parse();
//    
//    a.set("123456789");
//    a.parse();
//    
//    return EXIT_SUCCESS;
//}
posted on 2008-03-22 06:23 逛奔的蝸牛 閱讀(427) 評論(0)  編輯 收藏 引用 所屬分類: Java
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线精品视频一区二区| 小黄鸭精品aⅴ导航网站入口| 亚洲久久一区| 亚洲日本精品国产第一区| 亚洲福利视频一区二区| 国产欧美一区二区三区沐欲| 国产精品人人做人人爽| 国产精品一区二区在线| 国产午夜精品一区二区三区欧美| 国产亚洲午夜高清国产拍精品| 国产一区在线视频| 亚洲黄色在线| 亚洲综合日本| 久久精品九九| 欧美黄色aa电影| 国产日产精品一区二区三区四区的观看方式 | 亚洲精品一区二区网址| 99视频精品| 欧美中文字幕在线| 欧美精品一区二区蜜臀亚洲| 国产精品久久久久永久免费观看| 国产综合欧美在线看| 亚洲精品乱码视频| 久久国产福利国产秒拍| 亚洲电影免费观看高清完整版在线 | 欧美黑人一区二区三区| 日韩亚洲在线观看| 久久精品一区二区三区不卡牛牛| 亚洲精品在线观看视频| 亚洲免费中文字幕| 亚洲第一区在线观看| 亚洲一区二区三区高清 | 亚洲国产日韩欧美在线图片 | 99re成人精品视频| 久久黄色网页| a91a精品视频在线观看| 久久人人97超碰人人澡爱香蕉 | 国产精品久久久久永久免费观看| 在线不卡a资源高清| 亚洲欧美成人网| 欧美黑人多人双交| 久久精品人人做人人爽| 欧美三级黄美女| 亚洲卡通欧美制服中文| 六月婷婷久久| 欧美在线免费观看视频| 国产精品伦理| 亚洲字幕在线观看| 亚洲精品中文字幕在线| 男男成人高潮片免费网站| 好男人免费精品视频| 欧美在线视频在线播放完整版免费观看 | 一区二区三区精品久久久| 欧美 日韩 国产在线| 欧美制服丝袜| 国内精品视频久久| 久久久亚洲高清| 久久精品日韩一区二区三区| 国产亚洲精品aa| 久久女同精品一区二区| 欧美在线啊v一区| 精品999久久久| 欧美gay视频激情| 模特精品在线| 亚洲午夜激情| 亚洲欧美国产高清va在线播| 国产精品中文字幕在线观看| 欧美一区午夜精品| 欧美在线观看视频| 狠狠综合久久| 免费久久99精品国产自在现线| 久久久久国色av免费看影院| 在线观看91精品国产入口| 免费欧美视频| 欧美精品一区二区三区蜜臀| 亚洲一区区二区| 午夜欧美视频| 亚洲国产精品va在线看黑人| 最新热久久免费视频| 一区二区三区视频在线观看| 亚洲国产欧美一区二区三区久久| 欧美成人精品福利| 欧美激情一区二区久久久| 亚洲一区二区三区免费在线观看| 国产精品白丝jk黑袜喷水| 午夜精品亚洲| 久久久女女女女999久久| 亚洲美女黄色片| 亚洲字幕一区二区| 亚洲福利av| 亚洲一二三四久久| 一区二区三区在线高清| 亚洲日本欧美| 国产欧美成人| 亚洲国产精品999| 国产精品推荐精品| 欧美国产精品| 国产麻豆午夜三级精品| 欧美成人免费va影院高清| 欧美日韩免费观看一区| 久久久久久夜| 国产精品www994| 欧美高清在线精品一区| 国产精品乱子久久久久| 亚洲第一在线视频| 国色天香一区二区| 这里只有精品丝袜| 亚洲国产精品第一区二区三区| 99国产一区| 亚洲人成人77777线观看| 亚洲欧美在线免费| 亚洲天堂av图片| 欧美成人国产| 六月婷婷久久| 国产一区二区三区在线观看免费视频 | 欧美国产日韩二区| 国产乱码精品| 亚洲美洲欧洲综合国产一区| 激情综合激情| 午夜精品久久久久久久99热浪潮| 99精品国产高清一区二区| 久久久国产一区二区三区| 午夜视频在线观看一区| 欧美日韩国产bt| 亚洲国产美女久久久久| 在线播放精品| 久久裸体艺术| 久久精品国产96久久久香蕉| 国产精品va在线播放| 亚洲人成亚洲人成在线观看| 伊人久久男人天堂| 亚洲一区在线免费观看| 亚洲午夜久久久久久尤物 | 欧美一区2区视频在线观看 | 国产精品成人久久久久| 亚洲国产欧美一区二区三区久久 | 欧美一区二区三区视频免费播放| 在线午夜精品| 欧美人妖另类| 日韩亚洲欧美一区二区三区| 日韩亚洲在线观看| 欧美另类在线播放| 亚洲黄色精品| 99re视频这里只有精品| 欧美精品一区二区精品网| 亚洲激情网址| 一区二区三区精品在线| 欧美日韩一区二区在线| 夜夜嗨av色综合久久久综合网| 亚洲一区欧美二区| 国产婷婷色综合av蜜臀av| 久久er精品视频| 欧美国产一区二区三区激情无套| 亚洲国产精品成人综合色在线婷婷| 欧美+日本+国产+在线a∨观看| 欧美激情网站在线观看| 亚洲精品一区二区三区樱花| 欧美日韩精品一区二区在线播放 | 亚洲欧美大片| 久久久久久9| 亚洲国产天堂久久综合网| 欧美黄色片免费观看| 日韩视频欧美视频| 欧美在线视频观看免费网站| 激情欧美一区二区三区在线观看| 久久综合久久综合久久| 亚洲伦理网站| 欧美一区二区三区视频在线观看| 国产专区欧美精品| 欧美国产精品va在线观看| 亚洲午夜久久久久久久久电影院| 久久精品综合| aa级大片欧美| 国产丝袜美腿一区二区三区| 欧美国产激情二区三区| 性色av一区二区三区红粉影视| 你懂的国产精品永久在线| 亚洲天堂av高清| 亚洲高清视频在线观看| 欧美日韩在线精品| 久久久另类综合| 一区二区不卡在线视频 午夜欧美不卡在| 午夜久久资源| 一本色道**综合亚洲精品蜜桃冫 | 国产女人aaa级久久久级| 久久久久国内| 亚洲免费一在线| 最新亚洲电影| 久久综合狠狠| 性欧美xxxx大乳国产app| 亚洲福利国产精品| 国产亚洲欧美一级| 国产精品成人va在线观看| 欧美成人一区二区| 久久久蜜臀国产一区二区| 欧美一区二区三区播放老司机| 夜夜嗨av一区二区三区中文字幕 | 亚洲国产mv| 国产午夜精品理论片a级大结局| 欧美日韩国产欧|