lotto
在玩德國遊戲
lotto
時,要從集合
中取出六個數。
乙個非常流行的玩法(儘管這種玩法並不能增加你贏的機會)是從這
49個數字中取出
k個數字(
6)組成子集
s。然後玩遊戲的時候僅從
s中取出數字。
例如,當
k=8,
s=1,2,
3,5,
8,13,
21,34時,有
28種可能的遊戲:
[1,2,3,5,8,13]
,[1,2,3,5,8,21]
,[1,2,3,5,8,34]
,[1,2,3,5,13,21]
,……,
[3,5,8,13,21,34]。
編乙個程式,讀入
k的值和集合
s,列印僅從
s中取數的所有可能遊戲。
輸入
輸入檔案包括乙個或多個測試情形。
每種情形一行,由多個整數組成,整數之間用空格分隔。行首整數即為k值(
6)。
接著是用於描述集合s的
k個整數,全部以公升序排列。 在
k的位置輸入零(
0)即表示輸入結束。
輸出:
對於每乙個測試情形,列印出所有可能遊戲,每個遊戲一行。
每個遊戲中的數字必須以公升序排列,每兩個之間用乙個空格分隔。而這些遊戲要用類似於字典編纂的方式排序,也就是說,先對最低位排序,然後是第二低位,依次類推,就像輸出舉例中演示的那樣。
輸入樣例:
7 1 2 3 4 5 6 7
8 1 2 3 5 8 13 21 34
0輸出樣例
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7
1 2 3 5 8 13
1 2 3 5 8 21
1 2 3 5 8 34
1 2 3 5 13 21
1 2 3 5 13 34
1 2 3 5 21 34
1 2 3 8 13 21
1 2 3 8 13 34
1 2 3 8 21 34
1 2 3 13 21 34
1 2 5 8 13 21
1 2 5 8 13 34
1 2 5 8 21 34
1 2 5 13 21 34
1 2 8 13 21 34
1 3 5 8 13 21
1 3 5 8 13 34
1 3 5 8 21 34
1 3 5 13 21 34
1 3 8 13 21 34
1 5 8 13 21 34
2 3 5 8 13 21
2 3 5 8 13 34
2 3 5 8 21 34
2 3 5 13 21 34
2 3 8 13 21 34
2 5 8 13 21 34
3 5 8 13 21 34
本題就是產生組合數的方法。
#include
#include
using namespace std;
#define maxn 20
int p[maxn];
void print(int *a,int m) //
輸出
//先是產生1,
2,3,
4,5,
6,7......
這樣的組合數,再利用下標輸出需要的組合數
void gencomb(int *a,int n,int m)//
產生下乙個組合數
void genallcomb(int *a,int n,int m)
}
int main()
return 0;
}
(此程式在
poj上
gcc++
通不過,用
c++,accept
了。。。
奇怪了)
#include<
stdio.h
>
#include
<
iostream
>
using
namespace
std;
#define
maxn 20
intp[maxn];
void
print(
int*
a,int
m)
//輸出
cnt=
a[m-1];
cout
<<
p[cnt]
<<
endl;
}
//先是產生1,2,3,4,5,6,7......這樣的組合數,再利用下標輸出需要的組合數
void
gencomb(
int*
a,int
n,int
m)//
產生下乙個組合數
void
genallcomb(
int*
a,int
n,int
m)
}
intmain()
return
0;
}
下面的程式是學習了網上的寫出來的,比較簡潔,推薦!!!
#include#include//memset函式標頭檔案
int k;//每一組數的個數
int num[13];
int chosed[13];
void find(int st,int n)
else printf(" %d",num[i]);
}
}printf("\n");return;
}for(i=st;i}
} int main()
return 0;
}
北大ACM poj1088 滑雪
滑雪 description michael喜歡滑雪百這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道載乙個區域中最長底滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子 1...
Luogu P2245 星際導航
kruskal重構樹的板子題 和貨車運輸一樣滴 會的可以寫這個 我直接改的貨車運輸當時的倍增lca的 思路就是建出最小生成樹 因為顯然一些邊權很大的邊是不可能走的 然後倍增維護路徑上邊權的極值 include include include include include include inclu...
洛谷2245 星際導航
sideman做好了回到gliese 星球的硬體準備,但是sideman的導航系統還沒有完全設計好。為了方便起見,我們可以認為宇宙是一張有n 個頂點和m 條邊的帶權無向圖,頂點表示各個星系,兩個星系之間有邊就表示兩個星系之間可以直航,而邊權則是航行的危險程度。sideman 現在想把危險程度降到最小...