Source Code
| Problem: 1014 | User: cug_fish2008 | |
| Memory: 204K | Time: 0MS | |
| Language: C++ | Result: Accepted |
- Source Code
#include <stdio.h> bool fun(int sum,int w[]); int main() { int c[7],n=1; int sum=0; for(int i=1;i<7;i++){ scanf("%d",&c[i]); c[i]%=30; sum+=c[i]*i;} while(c[1] || c[2] || c[3] || c[4] || c[5] || c[6]){ printf("Collection #%d:/n",n); if(sum%2==0 && fun(sum/2,c)) printf("Can be divided./n/n"); else printf("Can't be divided./n/n"); n++; sum=0; for(int i=1;i<7;i++){ scanf("%d",&c[i]); c[i]%=30; sum+=c[i]*i;} } return 0; } bool fun(int sum,int w[]) { int sm=0; for(int a=0;a<=w[6];a++){ sm+=a*6; if(sm>sum)return false; if(sm==sum)return true; for(int b=0;b<=w[5];b++){ sm+=b*5; if(sm>sum){sm-=b*5;break;} if(sm==sum)return true; for(int c=0;c<=w[4];c++){ sm+=c*4; if(sm>sum){sm-=c*4;break;} if(sm==sum)return true; for(int d=0;d<=w[3];d++){ sm+=d*3; if(sm>sum){sm-=d*3;break;} if(sm==sum)return true; for(int e=0;e<=w[2];e++){ sm+=e*2; if(sm>sum){sm-=e*2;break;} if(sum-sm<=w[1])return true; sm-=e*2; } sm-=d*3; } sm-=c*4; } sm-=b*5; } } return false; }
本文提供了一种解决物品分配问题的方法,通过C++编程实现了一个判断是否可以将一组物品平均分为两组的算法。该算法考虑了不同数量的物品及其价值,并通过递归方式检查所有可能的组合。
856

被折叠的 条评论
为什么被折叠?



