1樓:忽忽上升
從1,2,3,4,5中任選三個數的排列:
#include
using namespace std;
int main()
{for(int i=1;i<6;i++)for(int j=1;j<6;j++)
for(int k=1;k<6;k++)
{if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/
cout<
從鍵盤輸入五個數,從中選出任意三個數:
#include
#include
using namespace std;
int main()
{srand(time(0));
int a[5];
for(int m=0;m<5;m++)
cin>>a[m];
while(1)
{int i=rand()%4;
int j=rand()%4;
int k=rand()%4;
if(i!=k&&i!=j&&j!=k)
{cout<
2樓:匿名使用者
#include
int f(int n,int r) //求n取r的組合數else
return f(n-1,r)+f(n-1,r-1);
}int g(int n) //求n的階乘else
return n*g(n-1);
}void main()
cout<<"從"<
3樓:特維佐
#include
#include
using namespace std;
//主函式
int main(int argc,char * ar**)
int a[5]=;
printf("從以下五個數中任選三個數:\n%d %d %d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
printf("所有組合情況為:\n");
printf("第%d種:%d %d %d\n",1,a[0],a[1],a[2]);
printf("第%d種:%d %d %d\n",2,a[0],a[1],a[3]);
printf("第%d種:%d %d %d\n",3,a[0],a[1],a[4]);
printf("第%d種:%d %d %d\n",4,a[0],a[2],a[3]);
printf("第%d種:%d %d %d\n",5,a[0],a[2],a[4]);
printf("第%d種:%d %d %d\n",6,a[0],a[3],a[4]);
printf("第%d種:%d %d %d\n",7,a[1],a[2],a[3]);
printf("第%d種:%d %d %d\n",8,a[1],a[2],a[4]);
printf("第%d種:%d %d %d\n",9,a[1],a[3],a[4]);
printf("第%d種:%d %d %d\n",10,a[2],a[3],a[4]);
system("pause");
return 0;
c++程式設計 從n個數中選出m個數進行組合
4樓:馮老師(必果學院
程式設計思路:
從n個數中選出m個數進行組合(n>m)可以採用遞迴的方式解決
先從n個數中選一個數出來,然後在剩下的n-1個數當中選取m-1個數進行組合
對於n-1個數,同樣有
先從n-1個數中選一個數出來,然後在剩下的n-2個數當中選取m-2個數進行組合
對於n-n個數,同樣有
先從n-n個數中選一個數出來,然後在剩下的n-n個數當中選取m-n個數進行組合
如此遞迴
直到m-n==1為止
當m-n為1的時候,自然不用選了
每次選取的結果放入一個陣列當中,作為引數傳遞下去
當遞迴到m-n為1的時候,陣列和當前選定的值即構成一個有效組合,便可輸出
這類問題都可以嘗試遞迴的解決思路,將一個複雜的大問題,一級一級轉化為較小的,可以解決的問題
示例**如下:
void select(
int* data/*待篩選的數 裡面不能有重複的數*/,
int n,
int m,
int list/*假設list長度足夠,為m,初始list中的元素值為-1*/,
int listlen)
{int i,j;
if(m==1){
for(i=0;i
5樓:匿名使用者
n = 5
m = 3
a陣列 result向量
{}//輸出,回溯
//輸出,回溯
//輸出,回溯
//輸出,回溯
//輸出,回溯
。。。。。。 //這是排列,不是組合自己單步執行除錯吧,這樣更容易理解
c++程式設計題,編寫程式,從任意n個數中找出最大數和最小數,並將它們相互交換後輸出 10
6樓:
#include
using namespace std;
int main()
int max=p[0],min=p[0],max_index=0,min_index=0;//max最大值,min最小值,max_index最大值處的下標,min_index最小值處的下標
for(int i=0;imax)
}swap(p[max_index],p[min_index]); //最大值 最小值 相互交換位置
cout << "the maximum number is " << max << endl;
cout << "the minimun number is " << min << endl;
return 0;}
用c++編寫程式,輸入三個數abc, 使三個數按從小到大輸出
7樓:匿名使用者
#include
using namespace std;
int main()
//到此,保證a<=b
if ( c < a ) //小於小的,為最小cout << c << " " << a << " " << b
cout << a << " " << b << " " << c <
c語言程式設計用迴圈語句輸入數,求平均值
酒飲懷華藏 上樓的那個百,明顯是度錯了,應該知用浮點類道型,而版不是整型。權 include main a float sum 10 printf f a getch 櫻桃花花孩子 include main printf d sum 10 實現思路很簡單 將十個數相加後,再除以10即可. 樓上的做法...
用c 求所有水仙花數,如何求取水仙花數?
解題思路 水仙花數是指乙個n位正整數 n 3 如果這個數的每個位上的數字的n次冪之和等於它本身 例如 1 3 5 3 3 3 153 就稱這個數為水仙數。所以,要判斷乙個數是不是水仙數,關鍵就是要取得各個位上的數字,然後累計它們的n次方和,再進行判斷。取得各個位上的數字可以通過取餘運算子 和除號 來...
從數4中,取出這數,取出的任意的兩個數的積取出任意數的乘積
主要是求2個數和3個數 2個數 因為4和其他所有數的乘積形成正負相等的數,得到和是0,所以只用考慮前6個數 前6個數中a和 a乘其它4個數的積互為正負,沒有乘過的只有對方,所以只要 1 1,2 2,3 3想加即可,所以2個數的所有乘積總和是 14 3個數 先把含4的所有組合計算 取4後再取其餘6個數...