程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 求幾個數的組合數 容斥原理

求幾個數的組合數 容斥原理

編輯:C++入門知識

 准備做一些容斥原理的題目,其中容斥原理要求一個數的因子的任意組合。比如 30 = 2 * 3 * 5,則需要求出(2),(3),(5),(2,3),(2,5),(3,5),(2,3,5)這些組合,可以用dfs實現,寫了一個,留下來作個模板。
代碼:
[cpp] 
#include <iostream> 
#include <cstdio> 
#include <string.h> 
using namespace std; 
 
#define CLR(arr,val) memset(arr,val,sizeof(arr)) 
int num[4]={2,3,5,7}; 
int linnum[4]; 
int flag[4]; 
void dfs(int id,int begin,int cnt){ 
    if(id == cnt){ 
      for(int i = 0;i < 4;++i) 
          printf("%d ",linnum[i]); 
      printf("\n"); 
      return; 
    } www.2cto.com
    for(int i = begin;i < 4; ++i){ 
        if(!flag[i]){ 
          flag[i] = true; 
          linnum[id] = num[i]; 
          dfs(id+1,i,cnt); 
          flag[i] = false; 
        } 
    } 

int main(){ 
    for(int i = 1;i <= 4;++i){ 
        CLR(flag,0); 
        CLR(linnum,0); 
      dfs(0,0,i); 
      printf("ss\n"); 
    } 
    return 0; 


作者:wmn_wmn

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved