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

逛奔的蝸牛

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

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

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

組合算法  
  本程序的思路是開(kāi)一個(gè)數(shù)組,其下標(biāo)表示1到m個(gè)數(shù),數(shù)組元素的值為1表示其下標(biāo)  
  代表的數(shù)被選中,為0則沒(méi)選中。    
  首先初始化,將數(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è)單元做加一操作,滿(mǎn)N進(jìn)  
  一。每加一次一就判斷一下各位數(shù)組單元有無(wú)重復(fù),有則再轉(zhuǎn)回去做加一操作,沒(méi)  
  有則說(shuō)明得到了一個(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 逛奔的蝸牛 閱讀(427) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 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>
            国产视频一区二区在线观看| 国产精品99久久久久久www| 最近中文字幕日韩精品| 精品成人久久| 亚洲精品女人| 香蕉久久夜色精品国产| 亚洲国内欧美| 亚洲第一二三四五区| 尤物yw午夜国产精品视频明星| 国内成人自拍视频| 亚洲黄色成人| 亚洲一区一卡| 久久久亚洲国产美女国产盗摄| 免费观看久久久4p| 亚洲国产专区校园欧美| 亚洲国内精品| 亚洲在线黄色| 免费美女久久99| 国产精品高精视频免费| 国产伪娘ts一区| 亚洲人成网站色ww在线 | 韩国久久久久| 日韩一级片网址| 久久aⅴ乱码一区二区三区| 欧美承认网站| 亚洲综合色激情五月| 裸体素人女欧美日韩| 欧美午夜www高清视频| 尤物九九久久国产精品的特点 | 久久精品国产久精国产思思| 欧美国产日韩一区二区| 亚洲综合色丁香婷婷六月图片| 女生裸体视频一区二区三区| 国产精品亚洲综合一区在线观看| 亚洲国产婷婷| 久久久噜噜噜久久人人看| 日韩视频中午一区| 久久一区欧美| 国产日韩一区二区三区在线播放 | 久久久精品一区| 一本综合久久| 欧美成人a视频| 国产主播精品在线| 午夜精品影院| 一区二区三区四区五区精品| 裸体一区二区三区| 国产日韩欧美| 欧美一级网站| 亚洲视频综合在线| 欧美性猛交xxxx乱大交蜜桃| 亚洲精品影视| 亚洲国产另类久久久精品极度| 久久久午夜视频| 精品成人一区二区三区| 久久久久久夜精品精品免费| 亚洲欧美激情四射在线日 | 一本大道久久a久久精品综合| 久久久久国产一区二区三区四区| 欧美三级视频在线播放| 99re8这里有精品热视频免费| 欧美+亚洲+精品+三区| 欧美专区在线观看一区| 国产视频欧美| 久久亚洲国产成人| 久久欧美中文字幕| 亚洲国产精品一区| 亚洲国产精品一区二区www在线| 久久精品99国产精品| 国产欧美精品国产国产专区| 亚洲免费网址| 亚洲午夜精品在线| 国产精品有限公司| 久久久噜噜噜久久中文字幕色伊伊 | 国产在线视频不卡二| 久久国产精品久久久久久久久久| 一区二区三区精品国产| 国产精品美女www爽爽爽| 午夜精品理论片| 性色av一区二区三区红粉影视| 国产日韩亚洲欧美| 欧美顶级少妇做爰| 欧美日产一区二区三区在线观看| 一区二区三区欧美日韩| 亚洲性夜色噜噜噜7777| 国产欧美三级| 欧美国产视频一区二区| 欧美日韩国产精品一卡| 欧美在线观看网址综合| 久久精品一二三| 亚洲精品一区二区三区av| 日韩视频中文| 国产综合欧美在线看| 欧美激情视频一区二区三区在线播放| 久久亚洲影院| 亚洲午夜日本在线观看| 午夜精品国产更新| 在线观看福利一区| 亚洲精选大片| 国产主播精品在线| 亚洲精品女av网站| 国产精品久久久久免费a∨| 久久国产视频网站| 免费在线看成人av| 亚洲综合不卡| 久久免费黄色| 亚洲尤物视频网| 久久伊人免费视频| 一区二区三区视频在线| 亚洲欧美日韩在线观看a三区| 激情丁香综合| 日韩亚洲综合在线| 黄色成人免费观看| 在线视频精品一区| 午夜精品区一区二区三| 久久精品久久综合| 亚洲视频999| 欧美成年人视频网站| 久久视频一区| 国产视频不卡| 亚洲一区不卡| 一区二区三区视频在线| 久久亚洲精品伦理| 久久精品国产91精品亚洲| 国产精品成人观看视频国产奇米| 亚洲电影av| 亚洲国产精品99久久久久久久久| 亚洲女人小视频在线观看| 亚洲视频在线观看视频| 欧美国产三级| 亚洲国产日韩欧美| 亚洲电影免费在线观看| 久久av一区二区三区漫画| 欧美一级专区| 国产精品一区在线播放| 亚洲私拍自拍| 午夜精品99久久免费| 欧美午夜精品久久久久免费视| 亚洲精品美女91| 亚洲丝袜av一区| 欧美午夜不卡| 亚洲一区二区高清| 性色av一区二区怡红| 国产精品爽黄69| 亚洲女人天堂成人av在线| 欧美一级成年大片在线观看| 国产毛片精品国产一区二区三区| 亚洲欧美日韩综合aⅴ视频| 久久国产精品久久久久久久久久| 国产伦精品一区二区| 欧美一区二区在线| 久久影院亚洲| 91久久久一线二线三线品牌| 欧美激情精品久久久久久| 亚洲人成绝费网站色www| 日韩一区二区免费看| 欧美日韩综合视频网址| 亚洲私人影院| 久久字幕精品一区| 亚洲乱码国产乱码精品精| 欧美日韩国产91| 亚洲无亚洲人成网站77777| 久久精品久久99精品久久| 精品成人一区二区三区| 欧美激情视频一区二区三区在线播放| 91久久中文| 欧美一区影院| 亚洲精品欧美一区二区三区| 欧美日韩在线播放| 久久岛国电影| 亚洲另类一区二区| 久久精品国产久精国产思思| 亚洲国产精品va| 国产精品国产三级国产普通话三级| 亚洲欧美日韩国产综合精品二区| 蜜桃视频一区| 午夜一级久久| 日韩香蕉视频| 在线播放日韩欧美| 国产精品视频免费在线观看| 美国十次成人| 性欧美超级视频| 日韩午夜av电影| 欧美国产欧美亚州国产日韩mv天天看完整| 一区二区欧美在线| 欧美国产精品v| 国产精品久久久久7777婷婷| 久久久999国产| 在线亚洲精品| 亚洲国产精品电影| 久久久综合网站| 亚洲欧美国产77777| 在线观看亚洲视频| 国产日韩欧美精品| 欧美午夜视频网站| 欧美不卡一区| 久久五月婷婷丁香社区| 午夜精品电影| 亚洲性感激情| 亚洲图片在区色| 一级成人国产|