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很久呀!
- 行末不要多餘空白
- 測資全部印出來後,末端不要多餘換行
大概就這兩點