-
[BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(์คํํธ์ ๋งํฌ)SW Test/BaekJoon 2020. 4. 26. 18:34๋ฐ์ํ
- ์ด ๋ฌธ์ ๋ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
- DFS ์ด์ฉํ ํ์ด
#include <iostream> #include <algorithm> #include <cmath> using namespace std; int n; int arr[20][20]; int result=987987987; // dfs๋ก ํ์ํ์ฌ cnt๊ฐ n/2๊ฐ ๋๋ฉด ๊ฐ๊ฐ์ ๋ฅ๋ ฅ์น ๊ณ์ฐ void dfs(int s,int cnt,bool check[]){ if(cnt==n/2){ int sum1=0; int sum2=0; for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ if(check[i] && check[j]){ sum1+=arr[i][j]; sum1+=arr[j][i]; } if(!check[i] && !check[j]){ sum2+=arr[i][j]; sum2+=arr[j][i]; } } } result=min(abs(sum1-sum2),result); } else{ for(int i=s;i<n;i++){ if(!check[i]){ check[i]=1; dfs(i,cnt+1,check); check[i]=0; } } } } int main(){ cin>>n; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>arr[i][j]; } } bool check[20]={0}; dfs(0,0,check); cout<<result; }
- Next_permuation ์ด์ฉํ ํ์ด
#include <iostream> #include <vector> #include <algorithm> using namespace std; int n; int arr[20][20]; int result=987987987; int main(){ cin>>n; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>arr[i][j]; } } vector<int> temp; for(int i=0;i<n/2;i++){ temp.push_back(0); temp.push_back(1); } sort(temp.begin(),temp.end()); do{ int sum1=0; int sum2=0; for(int i=0;i<n-1;i++){ for(int j=i;j<n;j++){ if(temp[i] && temp[j]){ sum1+=arr[i][j]; sum1+=arr[j][i]; } if(!temp[i] && !temp[j]){ sum2+=arr[i][j]; sum2+=arr[j][i]; } } } result=min(abs(sum1-sum2),result); }while(next_permutation(temp.begin(),temp.end())); cout<<result; }
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ฐ์ํ'SW Test > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(๊ฐ์) (0) 2020.04.30 [BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(์นํจ ๋ฐฐ๋ฌ) (0) 2020.04.30 [BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(ํด์ฌ) (0) 2020.04.26 [BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(๊ฒ๋ฆฌ๋ฉ๋๋ง2) (0) 2020.04.26 [BaekJoon] ์ผ์ฑ sw ์ญ๋ ํ ์คํธ(์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ) (0) 2020.04.26