「称砝码java」称砝码问题python

博主:adminadmin 2022-11-23 05:23:06 53

本篇文章给大家谈谈称砝码java,以及称砝码问题python对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。