๋ฌธ์
์ฝ๋
#include <iostream>
#include <vector>
using namespace std;
int N, ans, temp_cnt;
vector<pair<int,int>>v;
void backtracking(int idx){
if(idx == N+1) return;
for(int i=0; i<N; i++){
if(v[idx].first<=0) backtracking(idx+1);
else if(v[i].first<=0 || i==idx) continue;
else{
v[idx].first -= v[i].second;
v[i].first -= v[idx].second;
backtracking(idx+1);
v[idx].first += v[i].second;
v[i].first += v[idx].second;
}
}
for(int i=0; i<N; i++){
if(v[i].first<=0) temp_cnt++;
}
ans = max(ans, temp_cnt);
temp_cnt = 0;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N;
for(int i=0; i<N; i++){
int a, b; cin>>a>>b;
v.push_back({a,b}); // {๋ด๊ตฌ๋, ๋ฌด๊ฒ}
}
backtracking(0);
cout<<ans;
}
ํ์ด
- ๊ฐ์ฅ ์ผ์ชฝ์ ๊ณ๋์ ๋ ๋ค.
- ์์ ๋ค๊ณ ์๋ ๊ณ๋์ผ๋ก ๊นจ์ง์ง ์์ ๋ค๋ฅธ ๊ณ๋ ์ค์์ ํ๋๋ฅผ ์น๋ค. ๋จ, ์์ ๋ ๊ณ๋์ด ๊นจ์ก๊ฑฐ๋ ๊นจ์ง์ง ์์ ๋ค๋ฅธ ๊ณ๋์ด ์์ผ๋ฉด ์น์ง ์๊ณ ๋์ด๊ฐ๋ค. ์ดํ ์์ ๋ ๊ณ๋์ ์๋ ์๋ฆฌ์ ๋ด๋ ค๋๊ณ 3๋ฒ ๊ณผ์ ์ ์งํํ๋ค.
- ๊ฐ์ฅ ์ต๊ทผ์ ๋ ๊ณ๋์ ํ ์นธ ์ค๋ฅธ์ชฝ ๊ณ๋์ ์์ ๋ค๊ณ 2๋ฒ ๊ณผ์ ์ ๋ค์ ์งํํ๋ค. ๋จ, ๊ฐ์ฅ ์ต๊ทผ์ ๋ ๊ณ๋์ด ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์์นํ ๊ณ๋์ผ ๊ฒฝ์ฐ ๊ณ๋์ ์น๋ ๊ณผ์ ์ ์ข ๋ฃํ๋ค.
์ ์กฐ๊ฑด์ ๋ง๊ฒ ๋ฐฑํธ๋ํน์ ๋๋ฆฌ๋ฉด ๋๋ ๋ฌธ์ ์ ๋๋ค.
1๋ฒ ์กฐ๊ฑด์ ๋ง์กฑํ๊ธฐ ์ํด ์ฒซ ๋ฐฑํธ๋ํน์ ์ธ๋ฑ์ค๋ 0๋ฒ์ผ๋ก ์ฃผ์๊ณ , 3๋ฒ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๊ธฐ ์ํด ๋ฐฑํธ๋ํน์ ๋ค์ ์ธ๋ฑ์ค๋ ํ์ฌ (๊ณ๋ ์ธ๋ฑ์ค +1)๋ก ๋ฃ์์ต๋๋ค. ๋ํ 2๋ฒ ์กฐ๊ฑด์ ๋ง์กฑํ๊ธฐ ์ํด์ ์กฐ๊ฑด๋ฌธ์ ์ฃผ์ด์ ์ฒ๋ฆฌํ์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 18430๋ฒ - ๋ฌด๊ธฐ ๊ณตํ (0) | 2022.08.21 |
---|---|
[๋ฐฑ์ค,c++] 1174๋ฒ - ์ค์ด๋๋ ์ (0) | 2022.08.21 |
[๋ฐฑ์ค,c++] 14712๋ฒ - ๋ด๋ชจ๋ด๋ชจ (Easy) (0) | 2022.08.20 |
[๋ฐฑ์ค,c++] 10971๋ฒ - ์ธํ์ ์ํ2 (0) | 2022.08.20 |
[๋ฐฑ์ค,c++] 17266๋ฒ - ์ด๋์ด ๊ตด๋ค๋ฆฌ (0) | 2022.08.18 |
[๋ฐฑ์ค,c++] 17521๋ฒ - Byte Coin (0) | 2022.08.18 |
๋๊ธ