zoukankan      html  css  js  c++  java
  • 天平称重(进制解法)

    用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
    如果只有5个砝码,重量分别是1,3,9,27,81
    则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。

    本题目要求编程实现:对用户给定的重量,给出砝码组合方案。
    例如:
    用户输入:
    5
    程序输出:
    9-3-1
    用户输入:
    19
    程序输出:
    27-9+1

    要求程序输出的组合总是大数在前小数在后。
    可以假设用户的输入的数字符合范围1~121。

    #include<iostream>
    #include<math.h>
    using namespace std;
    void f(int n,int k)
    {
    	
    	if(n==0)return;
    	int m=n;	
    	if(m%3==2)
    	{
    	  n=n/3+1;
    	  f(n,k+1);
    	}
    	else 
    	{
    		n=n/3;
    		f(n,k+1);
    	}
    
    	if(m%3==1){
    		if(n==0)cout<<pow(3,k);
    	   else cout<<'+'<<pow(3,k);
    	}
    	if(m%3==2){
    		if(n==0)cout<<pow(3,k);
    		else cout<<'-'<<pow(3,k);
    	}
    	if(m%3==0);
    }
    int main()
    {
            int n;
            cin>>n;
            f(n,0);
            return 0;
    }
    

      

  • 相关阅读:
    The Triangle_DP
    LITTLE SHOP OF FLOWERS_DP
    K Best(最大化平均数)_二分搜索
    Number Game_状态压缩
    Stockbroker Grapevine_Floyd
    A very hard Aoshu problem
    AOE 网络
    AOV网
    最小生成树
    [POJ] 1562 Oil Deposits (DFS)
  • 原文地址:https://www.cnblogs.com/zhangshuyao/p/8653648.html
Copyright © 2011-2022 走看看