snrg.net
当前位置:首页 >> C++中在数组中提取N个数的全组合,该怎么实现? >>

C++中在数组中提取N个数的全组合,该怎么实现?

代码在下面,从最右侧的位数不断增加,到最大值后左移一位,再循环// zuhe.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include using namespace std;int g_input[] = {1,2,3,4};void zuhe(int array[],

#include <iostream.h>#include <algorithm>int main(){int i,n;char a[20];cout<<"n=";cin>>n;for(i=0;i<n;i++) a[i]='0'+i+1;a[i]=0;cout<<a<<endl;while(next_permutation(a,a+n)) cout<<a<<endl;system("pause"); return 0;}

你可以试试,递归,

这是全排列问题 我以前用递归的方法写了一个,非递归的我不会. 一共有N的阶乘种情况啊! 有看不懂的地方HI我 #include <iostream> #include <vector> using namespace std; template <typename T> void Swap(T &x, T &y) { T temp= x; x= y;

对一维数组进行遍历,相同下标对应做加法操作即可

#include <cstdio>//============================================= int array[2333]; for(register int i=n;i--;) scanf("%d",array+i);或者#include <iostream>//============================================= int array[2333]; for(register int i=n;i--;) std::cin>>array[i];

for(int i=2 ;i 追问: 谢谢您的回答.同时抱歉,我问题问的不完整.我是想问作为if的条件语句,该怎么写.即if(从数组的某数开始到另一个数之间的数全部等于1). 追答: boolean f=true;for(int i=2 ;i 评论0 0 0

如果是有排列的先后顺序要求 a(n,m)=n!/(n-m)!如果是没有排列的先后顺序要求 c(n,m)=a(n,m)/m!

不好意思,英文我看不懂,不过中文我就懂了#include <stdio.h> #include <conio.h> #include <stdlib.h>#include <time.h> int a[100];//a[0]舍弃不用,a[1]至a[m]存组合数void zh(int n,int m,int num){ int i; if(m==num-1) { for(i=1;i<=m;i++) printf("%d "

int a[N]; 句话定义了一个有N个元素的整型数组,这里N要用常数,如5,8,10等来表示 用的时候 a[0] a[1] a[9]就分别代表数组里的10个整型数 当输入的时候,可以写成 for(int i=0; i{ scanf("%d",a[i]); }

网站首页 | 网站地图
All rights reserved Powered by www.snrg.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com