已知一个数组,保存了n个(n=num.size(),访问到最后一根火柴棍 代码实现 #includeusing namespace std;#include#includebool fn(int i,vector&num,int sum,int bucket[]){if (i >= num.size())//此时说明火柴棍放完啦{//看4条边是否等于sumreturn bucket[0] == sum && bucket[1] == sum && bucket[2] == sum &&bucket[3] == sum;}//去放置4条边for (int j = 0; j < 4; j++)//每次递归的时候j都=0,从第一条边开始{if (bucket[j] + num[i] > sum)continue;bucket[j] = bucket[j] + num[i];if (fn(i + 1, num, sum, bucket))//递归完毕,执行该语句返回turereturn true;bucket[j] -= num[i];//回溯}return false;}void main(){int num[] = { 1,1,2,2,2 };//测试用例vector vv(num, num + 5);int bucket[4] = { 0 }; //4条边sort(vv.begin(), vv.end(),greater());//从大到小排序,优化代码执行效率int s = 0;for (int i = 0; i < 5; i++)s = s + num[i];if (s % 4 != 0){cout
正文
贪心算法
题目