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

逛奔的蝸牛

我不聰明,但我會(huì)很努力

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

2。算法來源與互聯(lián)網(wǎng)

組合算法  
  本程序的思路是開一個(gè)數(shù)組,其下標(biāo)表示1到m個(gè)數(shù),數(shù)組元素的值為1表示其下標(biāo)  
  代表的數(shù)被選中,為0則沒選中。    
  首先初始化,將數(shù)組前n個(gè)元素置1,表示第一個(gè)組合為前n個(gè)數(shù)。    
  然后從左到右掃描數(shù)組元素值的“10”組合,找到第一個(gè)“10”組合后將其變?yōu)?nbsp; 
  “01”組合,同時(shí)將其左邊的所有“1”全部移動(dòng)到數(shù)組的最左端。    
  當(dāng)?shù)谝粋€(gè)“1”移動(dòng)到數(shù)組的m-n的位置,即n個(gè)“1”全部移動(dòng)到最右端時(shí),就得  
  到了最后一個(gè)組合。    
  例如求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進(jìn)制的方法吧。設(shè)一個(gè)N個(gè)單元的數(shù)組,對(duì)第一個(gè)單元做加一操作,滿N進(jìn)  
  一。每加一次一就判斷一下各位數(shù)組單元有無重復(fù),有則再轉(zhuǎn)回去做加一操作,沒  
  有則說明得到了一個(gè)排列方案。

#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 逛奔的蝸牛 閱讀(430) 評(píng)論(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| 欧美精品久久一区| 欧美日韩国产一区精品一区| 欧美日韩精品是欧美日韩精品| 欧美日韩1区2区3区| 欧美性久久久| 国产免费观看久久| 国模套图日韩精品一区二区| 一区一区视频| 91久久精品国产91性色| 亚洲最新色图| 欧美一区午夜精品| 久久天堂国产精品| 亚洲国产va精品久久久不卡综合| 亚洲国产精品一区二区三区| 亚洲毛片av在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲欧美成人综合| 久久爱www久久做| 麻豆精品一区二区av白丝在线| 欧美伦理91i| 欧美网站在线观看| 国产一区二区久久| 亚洲精品视频在线观看网站| 亚洲欧美激情视频| 久久久久久亚洲精品中文字幕| 欧美高清在线| 一区二区三区精品视频| 久久国产精品毛片| 欧美日本不卡| 国内精品视频一区| 一区二区三区产品免费精品久久75| 欧美一区二区精品久久911| 美日韩精品免费| 一区二区欧美激情| 久久精视频免费在线久久完整在线看| 欧美国内亚洲| 国产午夜精品一区二区三区视频| 亚洲国产精品成人一区二区| 亚洲综合国产| 欧美成人精品一区二区| 亚洲午夜精品17c| 久久亚洲电影| 国产精品一国产精品k频道56| 在线精品国产欧美| 欧美一级专区免费大片| 欧美国产日韩一区| 性做久久久久久久久| 欧美激情一区二区三区在线视频| 国产欧美日韩精品在线| 99国产精品99久久久久久粉嫩| 久久九九全国免费精品观看| 亚洲人成网站在线播| 久久狠狠久久综合桃花| 国产精品mm| 日韩亚洲精品在线| 美女国内精品自产拍在线播放| 中日韩高清电影网| 欧美精品久久天天躁| 精品1区2区3区4区| 香蕉成人久久| 亚洲精品永久免费| 老司机午夜精品| 国产午夜精品理论片a级大结局| 亚洲小说欧美另类婷婷| 欧美黄色片免费观看| 欧美一区二区三区四区夜夜大片| 欧美深夜福利| 日韩视频免费大全中文字幕| 久久亚洲国产成人| 午夜精品在线| 欧美性色视频在线| 在线一区二区三区四区| 亚洲国产精品久久久| 久久久久久一区| 国产综合香蕉五月婷在线| 亚洲欧美成人精品| 在线亚洲一区观看| 欧美日韩精品国产| 一本色道久久综合狠狠躁的推荐| 欧美va亚洲va日韩∨a综合色| 久久精品国产99| 国产亚洲一区在线播放| 久久av最新网址| 亚洲欧美日韩国产成人| 国产精品永久免费在线| 亚洲欧美日韩中文视频| 亚洲色在线视频| 欧美亚韩一区| 亚洲欧美日本在线| 亚洲线精品一区二区三区八戒| 欧美图区在线视频| 亚洲午夜高清视频| 一本色道久久综合狠狠躁篇怎么玩 | 国产精品国产三级国产专播品爱网 | 欧美精品日韩三级| 亚洲人成网站精品片在线观看 | 欧美日韩的一区二区| 亚洲精品一区二区三区樱花| 欧美国产日韩一区二区在线观看| 牛人盗摄一区二区三区视频| 亚洲国产欧美在线人成| 欧美激情视频在线播放| 欧美电影免费| 在线亚洲欧美| 亚洲午夜视频在线| 国产日本亚洲高清| 六月婷婷久久| 嫩草伊人久久精品少妇av杨幂| 亚洲人成网站999久久久综合| 亚洲欧洲精品一区二区三区不卡 | 欧美国产日韩一区二区| 一本色道久久综合亚洲精品婷婷| 99综合精品| 国产精品视频久久久| 久久久精彩视频| 久久亚洲精选| 一区二区电影免费观看| 一区二区三区四区精品| 国产日韩精品一区二区三区| 你懂的亚洲视频| 欧美激情第3页| 性娇小13――14欧美| 久久精品一二三区| 亚洲麻豆一区| 亚洲桃花岛网站| 狠狠色伊人亚洲综合网站色| 欧美激情无毛| 国产精品久久久久久久7电影 | 好吊色欧美一区二区三区四区| 欧美成在线观看| 欧美三级在线视频| 久久精品免费观看| 欧美成人一区二区| 亚洲欧美国产另类| 巨乳诱惑日韩免费av| 亚洲一区激情| 久久精品亚洲精品| 99国产精品久久| 性久久久久久久久久久久| 亚洲国产日韩一区| 亚洲一区二区免费看| 在线精品在线| 亚洲视频在线视频| 亚洲国产精品精华液2区45| 一区二区三区日韩欧美精品| 在线高清一区| 亚洲一本视频| 亚洲人成毛片在线播放女女| 午夜精品福利视频| 一本色道久久加勒比88综合| 欧美在线在线| 亚洲欧美日韩在线播放| 裸体丰满少妇做受久久99精品| 午夜在线a亚洲v天堂网2018| 欧美成人高清| 久久久久免费| 国产精品久久99| 亚洲黄色性网站| 一区在线电影| 亚洲欧美国产一区二区三区| 亚洲激情亚洲| 欧美在线视屏| 欧美一激情一区二区三区| 欧美日本精品一区二区三区| 噜噜噜在线观看免费视频日韩| 国产精品推荐精品| 最新亚洲一区| 亚洲国产一区二区三区青草影视 | 亚洲裸体视频| 亚洲欧洲精品一区二区三区波多野1战4 | 黄色成人免费观看| 亚洲综合99| 亚洲影院色无极综合| 欧美激情久久久| 欧美成人精品h版在线观看| 国产日韩欧美二区| 亚洲一区二区三区精品视频| 亚洲视频 欧洲视频| 欧美xxxx在线观看| 欧美电影免费观看| 伊人成人在线视频| 欧美影院视频| 久久国产精品99精品国产| 国产精品乱码| 亚洲一二三区在线观看| 亚洲制服av| 欧美性猛交99久久久久99按摩| 日韩视频精品在线| 一区二区三区 在线观看视| 欧美精品18+| 亚洲精品欧美极品| 日韩午夜免费| 欧美区日韩区|