天平砝码称重量

源blog地址http://onlywish.me

用天平称重量

有1,3,9,27,81的砝码

输入一个121以内的数。求出称重方法:

如:输入10 显示 9+1;

输入 7  显示 9-3+1;

下面是答案(自己写的,非标准):

#include <stdio.h>
#include <math.h>
int sum = 0;
 int array[5] = {1,3,9,27,81};
 int count[5] = {1,4,13,40,121};
 char jo[2][2] = {
     {‘+’,’-’},
     {‘-’,’+’}
     };

void digui(int,int);

void main()
{
 int num;
 //scanf("%d",&num);
 for(int i = 1 ; i < 122 ; i++)
 {
  printf("%d = ",i);
  digui(i,0);
 }

}
void digui(int num,int j)
{

 for(int i  = 0 ; i<5 ; i++)
  if(num <= count[i]) break; //定位
  if(num > array[i])
  {
   printf("%d%c",array[i],jo[j][0]);
   if(j == 1) j = (j+1)%2;
   digui(fabs(num-array[i]),j);
  }
  if(num < array[i])
  {
   printf("%d%c",array[i],jo[j][1]);
   if(j ==0) j = (j+1)%2;
   digui(fabs(num-array[i]),j);
  }
  if(num == array[i])
  {
   printf("%d\n",array[i]);
   return;
  }
时间: 2024-10-03 21:54:14

天平砝码称重量的相关文章

hdu 1709 求天平不能称重的重量 动态规划

给定一个天平和n个砝码,每个砝码都有一个重量,求出从1到这些砝码的总和之间不能被天平表示的重量.天平可以两端放砝码. 动态规划做法,看网上都是母函数,真心不懂.. dp[i]如果是0表示这些砝码不能称重i重量,如果是1表示能称重i重量. 对于每个砝码,假设当前砝码重量是b[i],那么j从最大值开始,减小到b[i], 如果存在一个dp[j-b[i]]为1,说明当前的j能被组成. j逆着循环的原因是由于每个砝码只有 一个,类似于01背包与完全背包的样子, 如果正向循环会导致每个物品可能使用多次,逆向

【算法题】用最少的砝码称出1到100克的物品

题目描述: 给定一个天平,用最少的砝码称出1到100克的物品,砝码重量任选 假设物品放在右边,砝码可以放在左边或者右边,那么有:放在左边砝码的重量 = 放在右边砝码的重量 + 物品的重量,即 放在左边砝码的重量 - 放在右边砝码的重量 = 物品的重量. 假设砝码放在左边用'+'表示,放在右边用'-'表示.那么容易知道∑±ai(ai取'+'.'-'或不取,三种情况)表示所有可能的情况. 给出一种方案:1.3.9.27.81(想想为什么底数取3???) 容易知道4个砝码∑±ai最多有34 = 81中

砝码称重问题二

题目描述 有一组砝码,重量互不相等,分别为m1.m2.m3……mn:它们可取的最大数量分别为x1.x2.x3……xn. 现要用这些砝码去称物体的重量,问能称出多少种不同的重量. 现在给你两个正整数列表w和n, 列表w中的第i个元素w[i]表示第i个砝码的重量,列表n的第i个元素n[i]表示砝码i的最大数量.  i从0开始                   请你输出不同重量的种数.如:w=[1,2], n=[2,1], 则输出5(分析:共有五种重量:0,1,2,3,4) 解题 参考智力题砝码称重

蓝桥杯——说好的进阶之砝码称重(贪心算法)

5个砝码 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量. 如果只有5个砝码,重量分别是1,3,9,27,81.则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中). 本题目要求编程实现:对用户给定的重量,给出砝码组合方案. 例如: 用户输入: 5 程序输出: 9-3-1 用户输入: 19 程序输出: 27-9+1 要求程序输出的组合总是大数在前小数在后. 可以假设用户的输入的数字符合范围1~121. public static void main(String

51nod 1449 砝码称重 (进制思想)

1449 砝码称重 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 现在有好多种砝码,他们的重量是 w0,w1,w2,...  每种各一个.问用这些砝码能不能表示一个重量为m的东西. 样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中. Input 单组测试数据. 第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9). Output 如果能,输出YES,否则输出NO.

砝码称重问题,因式分解有妙用

如果天平两端都允许放砝码,并且假定所有的砝码都是整数克.为了称出从 1 克到 40 克 所有整数克 的物品,最少需要几个砝码? 感兴趣的读者不妨自己先试着想想,再往下看. 秘密在于 3 的幂 说起来这个问题历史还算是挺悠久的.据<数学游戏与欣赏>( [英] 劳斯·鲍尔 [加] 考克斯特 著,杨应辰等 译),这个问题被称作巴协 (Bachet) 砝码问题:而据<数学聊斋>(王树禾著),该问题至少可追溯到 17 世纪法国梅齐里亚克 (Meziriac, 1624) .他们给出的答案是:

J - 砝码称重 改自51nod1449

J - 砝码称重 Time Limit: 2000/1000 MS (Java/Others)      Memory Limit: 128000/64000 KB (Java/Others) Submit Status Problem Description 有一个物品和一些已知质量的砝码和天平,问能不能用这些砝码称出这个物品的重量(天平两边都可以放砝码) Input 多样例输入,样例数<=20000 对于每个样例: 第一行输入两个数n,m,表示砝码数量和重物质量,1 ≤ m ≤ 1018 第

C程序设计的抽象思维-递归过程-砝码称重

[问题] 在狄更斯时代,商人们用砝码和天平来称量商品的重量,如果你只有几个砝码,就只能精确地称出一定的重量.例如,假定只有两个砝码:分别是1kg和3kg.只用1kg的砝码可以称出1kg重量的商品,只用3kg的砝码可以称出3kg重量的商品.1kg和3kg的砝码放在天平同一边可以称出4kg重量的商品,放在不同边可以称出2kg重量的商品.因此利用这两个砝码,我们可以称出重量分别为1.2.3.4kg的商品. 编写一个递归函数: bool IsMeasurable(int target, int weig

砝码称重2

参考 https://blog.csdn.net/livelylittlefish/article/details/3854702 https://www.guokr.com/article/3742 http://yetanothermathprogrammingconsultant.blogspot.com/2016/03/the-weight-problem-of-bachet-de-meziriac.html http://www2.washjeff.edu/users/mwolterm