[白俊🔉][14501]退社問題の解説
私たちのグループで最も努力し、最もお金を稼ぐために働いている優秀な従業員が辞めます.
退職する前に、最も多くのお金を稼ぐ計画を立て、実行しなければならない.
白俊多を助けてお金を稼ぎましょう.
詳細については、Backjunのホームページを参照してください.問題に答える
🔑 問題を解く
私たち白俊はN+1日で辞めたので、N日まで仕事をしなければなりません.
コンサルティングの完了に必要な日付は3日で、対応する日付は3日であることを覚えておいてください.
これは典型的なDFS問題で、最初の日付からN日まで探索した後、いくら稼いだ可能性があるかをすべて調査したケースです.
🥽 ソースコードとソースコード分析
バックグラウンドサイトではなく、Visual Studioでコードを記述してインポートします.一部のコードにはテストコードが含まれています.
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
struct Task {
int period;
int earn;
};
using namespace std;
void dfs(int idx, int endDay, int money);
vector<Task> myTask;
int myMoney = -1;
int main() {
int TC;
cin >> TC;
myTask.assign(TC, {0, 0});
for (int i = 0; i < TC; i++)
cin >> myTask[i].period >> myTask[i].earn;
for (int i = 0; i < myTask.size(); i++)
if (myTask[i].period + i <= myTask.size())
dfs(i + 1, i + myTask[i].period, myTask[i].earn);
cout << myMoney;
}
//
void dfs(int idx,int endDay,int money) {
for (int i = idx; i < myTask.size(); i++)
if(endDay <= i && myTask[i].period + i <= myTask.size())
dfs(i + 1, i + myTask[i].period, money + myTask[i].earn);
myMoney = max(myMoney, money);
}
🔨 問題ポストこれはDFSの典型的な問題としての基本的な問題である.
私は問題を見間違えて、1時間変なことをした.
会社を辞めるまで仕事に励んでいた白俊.
優秀な部下がいるので、白俊の上司は気分が悪いかもしれません.
Reference
この問題について([白俊🔉][14501]退社問題の解説), 我々は、より多くの情報をここで見つけました https://velog.io/@qnfmtm666/백준14501-퇴사-문제-해설テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol