[白俊]6603号宝くじ
[白俊]6603号宝くじ
質問リンク:https://www.acmicpc.net/problem/6603
質問する
問題を理解する
これは組み合わせの問題です.与えられた数値内に数値が重複しない組合せを降順に出力する問題.
質問へのアクセス
コード実装(C++)
#include <iostream>
#include <vector>
using namespace std;
int num;
vector<int> nums;
vector<int> result;
bool check[13] = {false,};
void dfs(int n, int count){
if(count == 6){
for(int i = 0 ; i < 6 ; i++){
cout << result[i] << " ";
}
cout << "\n";
}
else{
for(int i = n ; i < num ; i++){
if(!check[i]){
check[i] = true;
result.push_back(nums[i]);
dfs(i + 1, count + 1);
check[i] = false;
result.pop_back();
}
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
int temp;
while(1){
cin >> num;
if(num == 0) break;
for(int i = 0 ; i < num ; i++){
cin >> temp;
nums.push_back(temp);
}
dfs(0,0);
nums.clear();
result.clear();
cout << "\n";
}
}
評価
ずっと並べ替え問題を解いていたが,結果的に組合せ問題が発生し,少し戸惑った.そして、全ての入力がなくても、出力を忘れてしまい、配置するために問題が長く掴まれてしまいました.
今、順番と組み合わせの問題は10分以内に理解して解決できるはずです.あまり複雑でなければ、一生懸命練習してすぐ出てきます.
Reference
この問題について([白俊]6603号宝くじ), 我々は、より多くの情報をここで見つけました https://velog.io/@kpg0518/백준-6603번-로또テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol