[BOJ][2309]七人の小人


質問する



問題のソース

トラブルシューティングポリシー


7人の矮人の身長の和は100の7つです.思ったほど簡単ではありません.stackでも問題は解決できると思いますが、まず7人を順番にスクロールして解決することはできないので、9人の中から2人の値を外します.
そうなると、ケースの数は9 C 2、計算すれば36です.二重砲口を用いて演算すれば,すべての状況を探索することができる.

コード#コード#

#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;

#define N 9
int main(){
	int sum = 0; int i, j;
	vector<int> df(9);
	int flag = 0;

	for(int i = 0;i < 9;i++) cin >> df[i];

	sum = accumulate(df.begin(), df.end(), 0);

	for(i = 0;i < df.size()-1;i++){
		for(j = i+1;j < df.size();j++){
			if(sum-(df[i]+df[j]) == 100){
				df[i] = -1;
				df[j] = -1;
				flag = 1;
				break;
			}
		}
		if(flag == 1) break;
		
	}

	sort(df.begin(), df.end());
	for(int i = 2;i < df.size();i++) cout << df[i] << endl;
}