「称砝码java」称砝码问题python
本篇文章给大家谈谈称砝码java,以及称砝码问题python对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、5个砝码,分别是1,3,9,27,81组合出1到121之间任意整数重量,输出的组合总是大数在前小数在后
- 2、7公斤米,50克砝码,200克砝码各一个,称1350克米问最少要多少次,并编程回答。
- 3、一个4g的砝码碎成两块,可求包括4以下所有重量,求两块砝码的重量。java算法,思想。结果都知道1和3。
- 4、砝码 称重
5个砝码,分别是1,3,9,27,81组合出1到121之间任意整数重量,输出的组合总是大数在前小数在后
很显然,有时候一种分量的砝码要用到多次,比如2这个值,必须要有2个1才能完成。那么任何一个数n都可以用n个1来组合。这说明,你的题目不严密。至少你需要规定每个砝码的个数上限。
不过尽管如此,还是可以用每个砝码最多两次的方案来进行组合。方法就是把数字写成3进制形式。每一位上的数字是多少,就使用多少个相应的砝码。从小到大,3的0次方对应末尾,3的1次方对应第二位,以此类推
如121这个数,它等于(11111)3,所以上面五个砝码个用1次。
7公斤米,50克砝码,200克砝码各一个,称1350克米问最少要多少次,并编程回答。
Private Sub Form_Load()
Dim i, j, a(), b(), x
For i = 0 To Int(7000 / 50)
For j = 0 To Int(7000 / 200)
If i * 50 + j * 200 = 7000 Then
x = x + 1
ReDim Preserve a(x)
ReDim Preserve b(x)
a(x) = i
b(x) = j
End If
Next j
Next i
i = a(1)
j = b(1)
Print "7公斤米共有" x "种组合:"
For x = 1 To UBound(a)
Print "50克砝码称" a(x) "次,200克砝码称" b(x) "次"
If (i + j) (a(x) + b(x)) Then i = a(x): j = b(x)
Next x
Print "最少要50克砝码称"; i "次,200克砝码称" j "次"
End Sub
一个4g的砝码碎成两块,可求包括4以下所有重量,求两块砝码的重量。java算法,思想。结果都知道1和3。
这题就是碎成的两块加起来的重量之和是4g就是了,那么把所有的组合列出来,然后符合两块都大于0并且两块都小于4而且两块之合等于4就是了.如果用int的话取整数,用double的话可以取到小数.
具体算法:
public class Test{
public static void main(String[] args){
while(true){
int a=(int)(Math.random()*4);
int b=(int)(Math.random()*4);
if(a0b0a4b4a+b==4)
System.out.println("第一块重量"+a+"第二块重量"+b);
}
}
}
上面的算法是让你明白思路.实际上写成double这题也简单.
条件就是第一个数随机取,第二个数为4-第一个数.那么保证第一个数大于0小于4就可以了.
double a=(Math.random())*4;
double b=4-a;
if(a4a0)
System.out.println(a+" "+b);
砝码 称重
int ismeasurable(int tar,int a[],int n) {
int i , j , all , size , mask ;
int* cal_idx ;
// 要一块乾净空间 , 该空间为法码所有放置的可能
// Cn取n + Cn取n-1 + Cn取n-1 + ... + Cn取2 + Cn取1 = 2^n 种可能
size = 1 n ;
cal_idx = (int*)calloc( size , sizeof(int) );
// 求出所有可能 , 以 mask 控制 , 使结果不会重复
for( mask = 1 , i = 0 ; i n ; i++ , mask = 1 ){
for( j = 0 ; j size ; j++ ){
if( j mask ){
cal_idx[ j ] += a[i] ;
}
}
}
// 求法码总重
for( all = 0 , i = 0 ; i n ; i++ ){
all += a[i] ;
}
// 开始看这些可能的放置方式是否可行
for( i = 0 ; i size ; i++ ){
if( cal_idx[ i ] == 0 ){
continue ; // 理论上只有一次是都跑到待测物那边的
}
if( ( tar + all - cal_idx[ i ] ) == cal_idx[ i ] ){
free(cal_idx); // 左边 == 右边重量 算成功
return 1 ;
}
}
free(cal_idx);
return 0 ;
}
称砝码java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于称砝码问题python、称砝码java的信息别忘了在本站进行查找喔。
发布于:2022-11-23,除非注明,否则均为
原创文章,转载请注明出处。