暴力解

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{int n;int a[100], vis[10000];//vis数组用来判断称过的重量是否出现过cin >> n;for (int i = 0; i<n; i++){scanf("%d", &a[i]);}memset(vis, 0, sizeof(vis));int cnt = 0;for (int i = 1; i <= n; i++)//控制使用砝码的数量
  {for (int j = 0; j<n; j++)//控制取到的第一个砝码
    {int sum = 0;for (int k = j; (k<(j + i))&&k<n; k++)//控制取砝码的区间长度
      {sum = sum + a[k];if (vis[sum] == 0){vis[a[k]] = 1;cnt++;}}}}cout << cnt+1 << endl;//最后要加上称的总重量为0的情况return 0;
}

母函数解

https://blog.csdn.net/valieli/article/details/53049939

//计算(1+x)*(1+x^2)*(1+x^3)*(1+x^4)
#include <iostream>using namespace std;
#define maxn 20 //数组的大小
int c1[maxn],c2[maxn];//c2为临时存储数组int main()
{int m;for(int i=0;i<maxn;i++) //初始化第一个式子:(1+x^2+x^3+...)
       {c1[i]=1;c2[i]=0;}//以下两个循环的表示过程就是1*(1+x)//(1+x^1)(1+x^2)//(1+x^1+x^2)*(1+x^3)//(1+x^1+x^2+x^3)*(1+x^4)//(1+x^1+x^2……x^j)(1+x^i)//被乘数*乘数//k表示被乘数中的每一项for(int i=2;i<=4;i++) // i 从第二个式子循环到第四个。{//(1+x)*(1+x^2)*(1+x^3)*(1+x^4)因为(1+x)的系数和指数已经初始化,所以将(1+x)作为乘数,(1+x^2)、(1+x^3)、(1+x^4)依次作为被乘数for(int j=0;j<=0.5*i*(i-1);j++) // j 从0循环到它所在式子中的指数最大值,即(1+x^1+x^2+……x^j)
           {for(int k=0,t=0;t<=1;t++,k+=i) //本例子中 k 表示指数增量,t 表示 k 增加几次。本式子中k增加1次
               {c2[k+j]+=c1[j];}}for(int j=0;j<maxn;j++) //更新数组
           {c1[j]=c2[j];c2[j]=0;}}int sum=0;for(int i=0;i<maxn;i++)sum=sum+c1[i];cout<<sum<<endl;return 0;
}

#include <iostream>
#include <cstring>
using namespace std;
#define min(a,b) ((a)<(b)?(a):(b))
int T, N, K, n[8], v[8], a[42], b[42], i, j, k, last, last2;//用一个last变量记录目前最大的指数
int main()
{cin >> K >> N;for (i = 0; i<K; i++)cin >> v[i] >> n[i];//v[i]是存储不同课程的学分值,n[i]是储存每个学分对几个课程(每个学分可以使用的次数)a[0] = 1;last = 0;for (i = 0; i<K; i++){last2 = min(last + n[i] * v[i], N);//计算下一个lastmemset(b, 0, sizeof(int)*(last2 + 1));for (j = 0; j <= n[i] && j*v[i] <= last2; j++)for (k = 0; k <= last && k + j * v[i] <= last2; k++)b[k + j * v[i]] += a[k];memcpy(a, b, sizeof(int)*(last2 + 1));last = last2;}int sum = 0;for (int i = 0; i <= N; i++)sum = sum + a[i];cout << sum << endl;return 0;
}

转载于:https://www.cnblogs.com/-citywall123/p/9911575.html

有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?相关推荐

  1. 有1克、2克、...、n克的砝码各一枚,能称出哪几种重量?总共有几种可能方案?

    有1克.2克.-.n克的砝码各一枚,能称出哪几种重量?总共有几种可能方案? 1个1克的砝码可以用函数1+x表示, 1个2克的砝码可以用函数1+x2表示, 1个3克的砝码可以用函数1+x3表示, 1个4 ...

  2. 耐克人脸识别_狄耐克智能交通再结一位“老铁”——与力高地产达成战略合作协议!...

    自新冠病毒肺炎疫情爆发以来 狄耐克各个产业的表现均可圈可点 · · 在楼宇对讲领域 狄耐克以人脸识别门禁系统让用户回家无忧: 在智能家居方面 狄耐克以智能语音控制功能让用户随心享家 同时,狄耐克智能门 ...

  3. python 克里金空间插值_Python克里金(Kriging)插值计算及可视化绘制

    前面两篇推文我们分别介绍了使用Python和R进行IDW(反距离加权法) 插值的计算及结果的可视化过程,详细内容可见如下: 本期推文,我们将介绍如何使用Python进行克里金(Kriging)插值计算 ...

  4. 如何用计算机克数和斤换算,克和斤的换算计算器(克千克斤公斤换算口诀)

    500克=1斤,1斤=10两365/500*10=7.3两 1千克=1000克 1公斤=2斤 500克=1斤 所以 1千克=1000克=1公斤=2斤 一千克也就是一公斤,一公斤也就是民间口中的两斤.既 ...

  5. 编程:现有1克,2克,3克,…100克砝码充分多枚,组合成100克共有多少种方式?

    JAVA实现拉马努金的整数拆分全排列 致敬神一般的拉马努金 点此跳转:非递归方式 由于电脑垃圾,递归算不出来结果,结果在非递归方式的文章 编程:现有1克,2克,3克,-100克砝码充分多枚,组合成10 ...

  6. 泰克示波器查眼图_泰克DSA71604C示波器眼图测试V1.0

    泰克 DSA71604C 示波器眼图测试 泰克 DSA71604C 示波器测试眼图目前有 2 种方法: 一种是利用余辉来进行测试: 第二种是利用示波器内置的 DPO-JET 软件来进行测试,本文以第二 ...

  7. 一块40克的砝码,摔成4块,利用天平,刚好可以称出1~40g所有整数克,问:这4块分别是多少克...

    一块40克的砝码,摔成4块,利用天平,刚好可以称出1~40g所有整数克,问:这4块分别是多少克 1 public static void main(String[] args) { 2 List< ...

  8. XTU1254 Blance 如何实现称出1∼n 克的物品,请问最少需要几颗砝码?

    题目描述 小明有一架天平,小明想称出1∼n 克的物品,请问最少需要几颗砝码?  比如小明想称出1∼4 克的物品,需要2颗砝码,为1和3克.  balance 输入 第一行是一个整数T(1≤T≤1000 ...

  9. 克我者官,我克者财,生我者印,我生者食伤,同我者比劫

    一.详解 官,克我者为官,官,管也. 克我必可以管我,比如日干为甲木,庚辛为金,庚辛克甲,即为甲之官. 因阴阳不同,而分出正官与偏官,阴阳相克为正,同性相克为偏,故辛金为甲之正官,庚金为甲之偏官. 因 ...

最新文章

  1. Oracle发布开源的轻量级 Java 微服务框架 Helidon
  2. LINK : fatal error LNK1104: cannot open file mfc42d.lib
  3. 牛客练习赛 60(待补E-长链剖分或者dsu)
  4. js文件中可以写html吗,js代码写在HTML正常,分离成js文件再在HTML中引用不起作用...
  5. [渝粤教育] 西南科技大学 单片机原理与应用 在线考试复习资料
  6. linux系统取代windows,Linux替代Windows系统软件大比拼
  7. 网页设计与制作教程(第2版)刘瑞斯+课本演练代码
  8. form表单reset重置按钮
  9. 知道注册电子邮件的方法么?今天就告诉你邮箱申请免费注册的方法!
  10. 人工智能初学笔记系列(1):基础概念与进化流程
  11. osgEarth编译——以VS2012为例
  12. RO、RW和ZI段详解
  13. STM32 AT24C64 Hal库写入错误
  14. java dbutils工具类_DbUtils工具类使用
  15. 送给入门maven的愤怒青年:archetype-cattalog内容详解
  16. WEB免费打印控件推荐(转载)
  17. 【硬件】对电源模块的梳理2.0(含LDO参数详解、DCDC参考设计)
  18. excel如何把多张表合并成一个表_如何将多个excel表格合并成一个_excel多表合并到一种表格的方法...
  19. 鸿蒙ability怎么理解,鸿蒙中的Ability之间或者进程间数据传递之对象(Sequenceable序列化)...
  20. 找不到模块“*.vue”或其相应的类型声明。ts(2307)

热门文章

  1. docker镜像容器的创建删除
  2. Linux设置与取消代理
  3. 关注国外学术团队的年度研究报告
  4. Device Tree Overlays:”插件“设备树
  5. C语言判断三条边是否能组成三角形
  6. NMT、enc-dec的一些笔记
  7. jQuery和CSS3定制HTML5视频播放器
  8. 分位数回归的r语言代码
  9. Zencart网站搭建与配置教程
  10. Scrcpy - 基础使用