1. 程式人生 > >求n個數的子集的三種思路

求n個數的子集的三種思路

#include<iostream>
using namespace std;

int sum = 0;//用於計數

void result(int list[], int flag[],const int n)
{
	cout<<"第"<<++sum<<"個子集"<<endl;//計數
	for (int i = 0; i <= n - 1; i++)
		if (flag[i] == 1)
			cout << list[i] << ' ';
	cout << endl;
}

void ziji(int list[], int flag[], const int n)
{
	int temp = pow(2, n);
	for (int i = 0; i < temp; i++)
	{
		int index = i;
		for (int j = 0; j < n; j++)
		{
			flag[j] = index % 2;
			index = index / 2;
		}
		result(list, flag, n);
	}
}
void main()
{
	int n;
	cin >> n;
	int *list = new int[n];
	int *flag = new int[n];
	for (int i = 0; i<n; i++)
		list[i] = i;
	ziji(list, flag, n);
	delete[]list;
	delete[]flag;
	system("pause");
}



相關推薦

n個數子集思路

#include<iostream> using namespace std; int sum = 0;//用於計數 void result(int list[], int flag[],const int n) { cout<<"第"<<++sum<<"

逆序對個數方法(歸併排序,樹狀陣列,權值線段樹)

求逆序對個數的三種方法 逆序對: 對於一個序列 a1a_1a1​,a2a_2a2​,a3a_3a3​…ana_nan​,如果存在aia_iai​>aja_jaj​且i<j,則aia_iai​和aja_jaj​為一個逆序對。 這裡將介紹3種求逆序對對數

n個數的排列

如果給定N個不同字元,將這N個字元全排列,最終的結果將會是N!種。如:給定 A、B、C三個不同的字元,則結果為:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6種情況。 public class Test6 { //設定總數 private static int count =0;pub

從陣列中取n個數有多少組合

private void mergeSort() { // int[] aa = {3, 5, 7, 9, 8, 4, 6, 1, 2}; // merge(aa, 0, aa.length-1); // for (int i=0;i<aa.

演算法 n個數的中位數 C

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

判斷連結串列中是否有環的思路

連結串列在面試中出現的頻率很高,有的比較正常,考連結串列的常規操作,主要看基本功是否紮實,有些就比較難,難在思維的改變和是否能夠想到對應的點。這裡出現的是其中一個題目,我稱之為有環連結串列問題。也就是從判斷一個單鏈表是否存在迴圈而擴充套件衍生的問題。下面來看問題如何解決。 首先來看最基本的這個問

YTUOJ——函式模板--n個數的和

題目描述 利用函式模板求4個數的和。 部分程式碼已給定如下,只需要提交缺失的程式碼。 輸入 第一行4個字元 第二行4個整數 第三行4個小數 輸出 第一行4個字元ascii的和 第二行4個整數的和 第三行4個小數的和 樣例輸入 abcd 1 2 3 4 1.1 2.2

Python實現"眾數"的方法

給定一個長度為n的陣列,返回眾數。眾數是指陣列中出現次數超過n/2次的元素 假設陣列非空,眾數一定存在 Example 1: Input: [3,2,3] Output: 3 Example 2: Input: [2,2,1,1,1,2,2] Output: 2

n個數的最小公倍數

騰訊2018秋招筆試題(研發類),程式設計題第一題: 輸入:n m為離n最近的整數,且m要滿足: {n+1,n+2,...,m}的最小公倍數和{1,2,3,...,m}的最小公倍數相同。 輸出:m import java.util.Arrays; import ja

演算法 - n個數的中位數(C++)

  //**************************************************************************************************** // // 求n個數的中位數 - C++ - by Chimomo // //

N個數的階乘相乘素因子個數總和

#include <bits/stdc++.h> using namespace std; bool vis[10000004]; vector<long long>prim; long long maxprim[10000004];//最大素因子 long long num

數論逆元的方法

擴充套件歐幾里德演算法 //非遞迴的擴充套件歐幾里德演算法 //返回a、b的gcd,同時x、y滿足ax+by=gcd int_t exEuclid(int_t a,int_t b,int_

【codechef】n個數,多少取法的異或值==m【二項式定理】

由於比賽還沒結束所以先不放題目了。。。(轉化題意:n個數,多少種取法的異或值==m ) 這道dp要寫得非常小心,考慮全面。第一發超時,原因是n=10^5,所以複雜度1024000,但是又想到所有數字都不超過1023,所以直接求每個數出現的次數就好。。 但是——這樣轉化之後,

【C語言】輸入一個整數,輸出該數二進位制表示中1的個數方法)

輸入一個整數,輸出該數二進位制表示中1的個數。如輸入32,輸出1.程式碼實現:方法1:與運算#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; int FindOne

斐波那契數列第n項的求法

方法1:         利用遞迴方法,但是遞迴看似簡單但是無法處理較大的項數,時間複雜度為o(2^n)。 public class fib_遞迴 { /** * @param args */ public static

QT:淺談百度Baidu座標系反轉至WGS84的思路

摘要:基於百度地圖進行資料展示是目前專案中常見場景,但是因為百度地圖是基於BD09座標系的,GPS座標(WGS84)或者其他常見的標準座標是無法準確在地圖上進行展示的,但是網際網路線上情況下,百度提供了將WGS84經緯度轉換成百度經緯度座標的API,這裡不再對其進行研究(離線情況下也有專門方法解決)

N個數以內的質數

沒事在C#吧解決些小問題,鞏固下基礎。 需求: 計算N以內的全部質數,並寫入文字檔案中。格式,每行10個數,每個數佔7列。最後另起一行輸出100萬以內有多少個質數。 所用到的主要知識點: 1:質

統計一個整數的二進位制中1的個數解法

一、每一位與0x1進行與運算 int countOne(int num)   {       int count = 0;       while ( num )       {         

hdu 3915 Game N個數中取若干個數字使得它們的異或值為0的方法數 高斯消元(mod2)

Problem Description   Mr.Frost is a child who is too simple, sometimes naive, always plays some simple but interesting games with his fri

n個數中兩數異或的最大值(字母樹)

#include <stdio.h> #include <string.h> #include <math.h> #include <iostream> #include <string> #include <