0%

[題解]NEOJ 63 Lotto(UVA)

Lotto(UVA)

題目連結
這一題主要就是建立一個排列樹,把每一種可能的情況用遞迴列出來

這一題用DFS明顯比BFS來得好、空間省很多(用一下資芽的圖XD)

來看程式碼吧!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(0),cin.tie(0)
using namespace std;
int n,arr[15];

void permutation(int arr_ind, int cur[],int cur_ind){
if(arr_ind>n)return;
if(cur_ind>=6){
for(int i=0;i<6;i++){
if(i>0)cout<<" ";
cout<<cur[i];
}
cout<<endl;
return;
}
for(int i = 0; i <= n-(6-cur_ind); i++){
cur[cur_ind] = arr[arr_ind+i];
permutation(arr_ind+i+1, cur, cur_ind+1);
}
}

bool f=0;

int main(){
ios;
while(cin>>n){
if(n==0)break;
if(f)cout<<endl;
memset(arr, 0, sizeof(arr));
for(int i=0;i<n;i++)cin>>arr[i];
sort(arr, arr+n);
int cur[10];
permutation(0, cur, 0);
f=1;
}
}

這一題必須很小心輸入輸出,它們會讓你WA很久呀!

  1. 行末不要多餘空白
  2. 測資全部印出來後,末端不要多餘換行

大概就這兩點