称砝码(搜索\暴力枚举)
来源:互联网 发布:时间倒计时软件 编辑:程序博客网 时间:2024/06/05 03:40
#include<bits/stdc++.h>using namespace std;int n,m[20],x[20],total,cnt;bool flag[10*6*2000+1000];void dfs(int num,int sum) { if(num==n)return ; for(int i=0;i<=x[num];i++) { dfs(num+1,sum+i*m[num]); flag[sum+i*m[num]]=1; }}int main() { while(cin>>n) { total=0,cnt=0; memset(flag,0,sizeof(flag)); for(int i=0;i<n;i++) cin>>m[i]; for(int i=0;i<n;i++) cin>>x[i]; for(int i=0;i<n;i++) total+=m[i]*x[i]; dfs(0,0); for(int i=0;i<=total;i++) if(flag[i]==1)cnt++; cout<<cnt<<endl; } return 0;}
#include <iostream> #include <set> using namespace std; int fama(int n, int* w, int* nums) { set<int> iset; int i,j; int sum=0; set<int>::iterator iter; for(i=0;i<n;i++) sum+=w[i]*nums[i]; iset.insert(sum); for(i=0;i<n;++i) { iter=iset.begin(); while(iter!=iset.end()) { for(j=0;j<=nums[i];j++) iset.insert(*iter-j*w[i]); ++iter; } } return iset.size(); } int main() { int n,i; int *w,*num; while(cin>>n) { w=new int[n]; for(i=0;i<n;i++) cin>>w[i]; num=new int[n]; for(i=0;i<n;i++) cin>>num[i]; cout<<fama(n,w,num)<<endl; delete [] w; delete [] num; } return 0; }
阅读全文
0 0
- 称砝码(搜索\暴力枚举)
- 称砝码
- 称砝码
- 称砝码
- 称砝码
- 称砝码
- 称砝码******
- 称砝码
- 称砝码
- 称砝码
- Fliptile 暴力枚举(可以写成搜索。。。)
- 华为OJ题目(十):称砝码
- 称假币(枚举)
- 称砝码问题
- 华为oj_称砝码
- 华为oj 称砝码
- 华为测试 称砝码
- 华为oj 称砝码
- Lua 双向队列的实现
- 深度学习八大开源框架
- Debian 6.0.5解决系统时间与北京时间相差8小时问题
- 聚类总结
- Android6.0运行时权限
- 称砝码(搜索\暴力枚举)
- stc15f104实现触摸开关
- 接口测试的一些感悟
- Update()和FixedUpdate()的区别
- 凸优化及其相关理论
- UML类图学习笔记
- [DuiLib教程1]VS2012+CMAKE+WIN10+Duilid环境的搭建
- leetcode
- [CF480A]Exams