C++编程(全排列问题)

一个数组只包含0、1两种数字
输入n(n表示0、1总的个数)
输出0、1的全排列
0、1的每种个数都要算进去,比如:
n=3
输出:
001
010
100
101
110
111

用递归吧。构建一个数组,依次将数组的每一位置1或者置0,然后输出。代码如下:
*************************************
#include <iostream>

using namespace std;

void print(int a[], int n, int k) {
if(k == n) {
for(int i = 0 ; i < n ; i++) {
cout<<a[i]<<" ";
}
cout<<endl;
return;
}
for(int i = 0; i < 2 ; i++) {
a[k] = i;
print(a, n , k+1);
}
}
void print(int n) {
int* a = new int[n];
print(a,n,0);
}

int main() {
int n;
cout<<"enter the length of array :"<<endl;
cin>>n;
if(n <0) {
return 0;
}
print(n);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-04-22
我的思路:一个int型变量在0~2的n次方-1 这个范围内,每次增1,在循环内将此数转换为2进制数输出即可
第2个回答  2007-04-23
怎么输出2进制数??

C++全排列问题,请问这段代码是大概什么流程思路,我看不太懂。求助!_百...
2.若当前序列为词典里最小最初最低的那个序列,则可以输出一个全排列。(可以借鉴解决其它遍历问题)内部原因:while(next_permutation(a,a+3)),如果存在a之后的排列,就返回true。如果a是最后一个排列,即字典里面没有后继,则返回false。

全排列算法(c++)
在计算机科学中,全排列问题对于无重复元素的集合,例如{a1, a2, a3, ..., an},目标是找出所有可能的排列方式。这种问题可以通过分治策略解决。首先,我们可以简化问题,将字符串分为两个部分:头部只有一个元素,尾部包含剩余所有元素。比如,以字符串"abcd"为例,头部可以是"a",尾部是"bcd"。这...

c++|全排列算法
) (1) 首先固定1,即1放到第一位,对后两个元素进行全排列; (2) 固定2,即更换1与2的位置,数组变成[2,1,3],固定2,对[1,3]进行全排列; (3) 交换1与3的位置,固定3,对[2,1]进行全排列。 本质上是一个 递归 问题。 需要注意的是 ,每一次更换完,全排列完以后...

c++全排列问题
include <stdio.h>#include <stdlib.h>int main(){int a[2][3] = {{1, 2, 3},{4, 5, 6}};for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {for (int k = 0; k < 3; k++) {if (i != j && i != k && j != k) {printf("%d %d...

全排列的算法用c++写出来
include<iostream.h> void main(){ int i,f=1,n;cout<<"请输入n"<<endl;cin>>n;for(i=1;i<=n;i++)f*=i;cout<<n<<"的全排列为:"<<f<<endl;return;}

求C++全排列算法,包括000,111...999
这个我认为不是很难.可以使用3重循环实现.for(i=0;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++)cout<<i<<j<<k<<endl;这样应该就可以了.如果想知道共有多少个数,可以在后面加一个记数语句.

(C++)关于全排列--循环移位法,怎么怎么用C++语言实现!
全排列递归法 \/\/字符交换 void Swap(char* a, char* b){ char temp = *a;a = *b;b = temp;} \/\/全排列 void QPL(char* Arr, char* begin){ if (*begin == '\\0')cout << Arr<<" ";else { for (char* p = begin; *p != '\\0'; p++){ Swap(p, begin);QPL(Arr, ...

C++编程(全排列问题)
void print(int a[], int n, int k) { if(k == n) { for(int i = 0 ; i < n ; i++) { cout<<a[i]<<" ";} cout<<endl;return;} for(int i = 0; i < 2 ; i++) { a[k] = i;print(a, n , k+1);} } void print(int n) { int* a = new int[n]...

C++中如何编写求出n个数的全排列
{ public:static const int ARRAY_MAX = 100;int n;int count;int cache[ARRAY_MAX];PaiLie(){ n = 0;count = 0;} void SetN(){ printf("请输入n:\\n");char c[10];while(true){ std::cin >> c;n = atoi(c);if(n <= ARRAY_MAX&&n > 0)break;else printf("输入错误,...

请帮小弟用c++写一个全排列递归函数
假设我们求permute(abc)的全排列。permute(abc)的全排列=a+permute(bc)和b+permute(ac)和c+permute(ab)=……….依次类推。所以就可以用递归做。而将abc拆分成a+bc,b+ac,c+ab的过程就是上面的:for(int j=k; j<=m; j++){ Swap(list[k],list[j]);Perm(list, k+1, m);Swap(...

相似回答