test

来源:互联网 发布:java ssm 开源项目 编辑:程序博客网 时间:2024/06/05 20:27
#include <iostream>#include <algorithm>#include <functional>using namespace std;bool used[100];int stick[100];int stick_num, target_length;bool concate(int unused, int left, int target_len) {if (unused ==0 && left==0)return true;if (left == 0)left = target_len;for (int i = 0; i < stick_num; ++i) {if (used[i] || stick[i]>left)continue;used[i] = true;if(concate(unused-1, left - stick[i], target_len))return true;used[i] = false;if (stick[i] == left || left == target_len)break;int j = i;while (i<stick_num && stick[j]==stick[i])i++;if (i==stick_num)break;if (i!=j)i--;}return false;}int main() {while (true) {int sum = 0;memset(used, 0, sizeof(used));memset(stick, 0, sizeof(stick));cin >> stick_num;if (stick_num == 0)break;for (int i = 0; i < stick_num; i++) {scanf("%d", &stick[i]);sum += stick[i];}sort(stick, stick+stick_num, greater<int>());for (int i=stick_num; i>0; i--) {if ((sum%i==0) && (sum/i >= stick[0])) {target_length = sum/i;if (concate(i, 0, sum/i)) {cout << sum/i << endl;break;}}}}return 0;}
原创粉丝点击