精华内容
下载资源
问答
  • 2021-12-24 14:46:35

    7.波瓦松的分酒趣题。法国著名数学家波瓦松青年时代研究过一个有趣的数学问题:

    某人有12品脱的啤酒一瓶,想从中倒出6品脱

    ,但他没有6品脱的容器,仅有一个8品脱和一个5品脱的容器,

    怎样倒才能将啤酒分为两个6品脱呢?

    **输入格式要求:"%d%d%d%d"

    提示信息:"Input Full a,Empty b,c,Get i:"

    **输出格式要求:" a%d b%d c%d\n%4d%4d%4d\n"

    "%4d%4d%4d\n"

    代码如下:

    #include <stdio.h>
    int i;
    main()
    { int a,y,z;
      printf("Input Full a,Empty b,c,Get i:");
      scanf("%d%d%d%d",&a,&y,&z,&i);
      getti(a,y,z);
      getti(a,z,y);
    }  	 	 		 	   
    getti(a,y,z)
      int a,y,z;
      {int b=0,c=0;
        printf("  a%d  b%d  c%d\n%4d%4d%4d\n",a,y,z,a,b,c);
        while(a!=i||b!=i&&c!=i)
        {if(!b)
           {a-=y;b=y;}
         else if(c==z)
           {a+=z;c=0;}
         else if(b>z-c)
           {b-=(z-c);c=z;}
         else {c+=b;b=0;}
         printf("%4d%4d%4d\n",a,b,c);
        }
      }
    
    

    更多相关内容
  • 品脱

    2021-02-16 04:35:06
    关于Laravel Laravel是一个具有表达力,优雅语法的Web应用程序框架。 我们认为,发展必须是一种令人愉悦的创造力,才能真正实现。 Laravel通过减轻许多Web项目中使用的常见任务来减轻开发工作的痛苦,例如: ...
  • 据说在他遇到某个古老的谜题之后,就开始对数学感兴趣了,这个谜题是这样的:给定一个装满水的8品脱壶以及两个容量分别为5品脱和3品脱的空壶,如何通过完全灌满或者倒空这些壶从而使得某个壶精确地装有4品脱的水。...

    问题:
    西蒙.丹尼斯.泊松是著名的法国数学家和物理学家。据说在他遇到某个古老的谜题之后,就开始对数学感兴趣了,这个谜题是这样的:给定一个装满水的8品脱壶以及两个容量分别为5品脱和3品脱的空壶,如何通过完全灌满或者倒空这些壶从而使得某个壶精确地装有4品脱的水。

    问题分析与解决思路:
    通过对问题的分析,拟采用广度优先遍历来解决该问题。由于初始状态是8品脱的壶里装满水,5品脱和3品脱的壶为空壶,我们可以先将三个壶的状态标示为:800,然后我们开始拓展这个数所有能到达的状态(括号里的水是上一状态):350(800)、503(800),然后我们继续拓展这一状态可能到达的状态,并且不能和之前的状态出现重复,下一状态:053(350)、323(350)、530(503),继续寻找下一可能到达的状态:620(323)、233(530),继续寻找下一可能到达的状态:602(620)、251(233),继续寻找下一可能到达的状态:152(602)、701(251),继续寻找下一可能到达的状态:143(152),至此,我们已经得到了4品脱的水。

    模型建立与算法描述
    我们将上述分析过程和解决的思路进一步归纳为以下步骤:
    (1)将初始状态800加入遍历序列,开始遍历。
    (2)首先判断是否能倒水,仅当倒水的壶为空或者被倒水的壶为满时不能倒水。
    (3)判断倒水的壶是否能倒光,并更新三个壶的状态。
    (4)判断是否有壶中水为4品脱,若有则结束遍历。
    (5)判断该状态之前是否出现过,若未出现过,将此状态加入到遍历序列中
    (6)重复(2)、(3)、(4)操作。

    伪代码:

    算法 pourwater(int[] nownum)
    for(int i:0->3){
       for(int j:0->3){
    		if(i!=j){
    			if(judge_pour(i,j,nownum)){
    				if (nownum[i] + nownum[j] > maxwater[j]) {
                        nownum[i] = nownum[i] - (maxwater[j] - nownum[j]);
                        nownum[j] = maxwater[j];
                     }
                 else {
                        nownum[j] = nownum[i]+nownum[j];
                        nownum[i] = 0;
                      }
    				if(nownum[0] == 4 || nownum[1] == 4 || nownum[2] == 4)
    					结束遍历;
    				if(!judge_exist(state,nownum[0] + nownum[1] +nownum[2])){
    					state.add(nownum[0] + nownum[1] + nownum[2]);
                    	list.add(nownum[0] + nownum[1] + nownum[2]);
    				}
    }
    			}
    		}
    	}
    算法 judge_pour(int index,int target,int[] num)
    if(num[index]==0)//空
                return false;
            else{
                if(num[target]==maxwater[target])//满
                    return false;
                else{
                    return true;
                }
            }
    算法 judge_exist(List<String> list, String s)
           for(String str:list){
                if(str.equals(s))
                    return true;
            }
            return false;
    
    

    算法实现
    首先我们用一个int型数组来存储每个水壶的最大容量:8、5、3,再用两个String类型的ArrayList分别来存储广度优先遍历序列和用于广度优先遍历查找。ArrayList 是 java 集合框架中比较常用的数据结构。继承自 AbstractList,实现了 List 接口。底层基于数组实现容量大小动态变化。允许 null 的存在。ArrayList 是支持快速访问、复制、序列化的。
    在程序运行时,首先将初始状态800加入ArrayList,然后进行倒水操作,在倒水操作中再不断将下一个要遍历的序列加入ArrayList中,直到有水壶出现4品脱的水。

    程序实现
    图形化界面结果
    字符化界面结果

    import java.util.ArrayList;
    import java.util.List;
    
    public class A4 {
        static int[] water={8,0,0};
        static int[] maxwater={8,5,3};
        static List<String> state=new ArrayList<>();//存放广度优先遍历序列
        static List<String> list=new ArrayList<>();//用于广度优先遍历查找  存放上一个状态
        public static void main(String[] args){
            state.add(water[0]+""+water[1]+""+water[2]);//初始状态
    
            pour_water(water);
    
            for(int k=0;k<list.size();k++){
                int[] newnum={Integer.parseInt(list.get(k).charAt(0)+""),Integer.parseInt(list.get(k).charAt(1)+""),Integer.parseInt(list.get(k).charAt(2)+"")};
                pour_water(newnum);
            }
            for(String str:state){
                System.out.println(str);
            }
    
        }
        public static void pour_water(int[] num){
    
            int[] nownum=num;
            for(int i=0;i<3;i++){
                for(int j=0;j<3;j++){
                    if(i!=j){
                        if(judge_pour(i,j,nownum)) {
                            int m=nownum[i],n=nownum[j];
                            //如果i水壶不能倒光
                            if (nownum[i] + nownum[j] > maxwater[j]) {
                                nownum[i] = nownum[i] - (maxwater[j] - nownum[j]);
                                nownum[j] = maxwater[j];
                            }
                            // i水壶能倒光
                            else {
                                nownum[j] = nownum[i]+nownum[j];
                                nownum[i] = 0;
                            }
    
                            if (nownum[0] == 4 || nownum[1] == 4 || nownum[2] == 4) {
                                state.add(nownum[0] + "" + nownum[1] + "" + nownum[2]);
                                list.remove(list.size()-1);
                                return;
                            }
                            //state不存在该状态时将该状态分别加到allstate和list
                            if(!judge_exist(state,nownum[0] + "" + nownum[1] + "" + nownum[2])){
                                state.add(nownum[0] + "" + nownum[1] + "" + nownum[2]);
                                list.add(nownum[0] + "" + nownum[1] + "" + nownum[2]);
                            }
    
                            nownum[i]=m;
                            nownum[j]=n;
                        }
                    }
    
                }
            }
        }
    
        //判断是否能倒水
        public static boolean judge_pour(int index,int target,int[] num){
            if(num[index]==0)//空
                return false;
            else{
                if(num[target]==maxwater[target])//满
                    return false;
                else{
                    return true;
                }
            }
    
        }
        //判断该状态是否已经遍历
        public static boolean judge_exist(List<String> list, String s){
            for(String str:list){
                if(str.equals(s))
                    return true;
            }
            return false;
        }
    
    }
    
    展开全文
  • 品脱很聪明。 它知道您单击了什么。 如果右键单击某个页面,则不会看到该页面。 仅当您右键单击图像时,它才会显示自己。 最后但并非最不重要的一点是,Pint使用最少的系统资源,这是其设计理念的目标之一。 支持...
  • 品脱艺术:Mercado del arte
  • 断点检查器 您的网站是否响应式? 此工具将帮助您测试站点中的断点。 安装 bower install rnowm/bp-inspector 用法 在index.html将<iframe id="iframe" src="demo-site.html">...替换为您要测试的文件的路径。...
  • C Prime Plus 第六版 编译器版本:Mac Xcode 11.6 第03章 数据和C 编程练习 8 // // main.c // Ex08 Page 69 ...// Created by turbo on 2021/5.../* 在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于.

    C Prime Plus 第六版

    编译器版本:Mac Xcode 11.6 

    第03章 数据和C 编程练习 8

    在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。
     编写程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量。
     思考对于该程序,为何使用浮点类型比整数类型更合适

    //
    //  main.c
    //  Ex08        Page 69
    //
    //  Created by turbo on 2021/5/9.
    //  Copyright © 2021 LiangNuo Software Technology Co., LTD. All rights reserved.
    //
    
    /* 在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。
     编写程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量。
     思考对于该程序,为何使用浮点类型比整数类型更合适 */
    
    #include <stdio.h>
    
    int main(void)
    {
        const unsigned short int PINT_PER_CUP = 2; // 1品脱=2杯
        const unsigned short int OUNCE_PER_CUP = 8; // 1杯=8盎司
        const unsigned short int SOUP_SPOON_PER_OUNCE = 2; // 1盎司=2大汤勺
        const unsigned short int TEA_SPOON_PER_SOUP_SPOON = 3; //1大汤勺=3茶勺
        
        /* 输入杯数 */
        float cups;
        printf("输入杯数: ");
        scanf("%f", &cups);
        
        /* 品脱数 */
        float pints = cups / PINT_PER_CUP;
        /* 盎司数 */
        float ounces = cups * OUNCE_PER_CUP;
        /* 大汤勺数 */
        float soupSpoon = ounces * SOUP_SPOON_PER_OUNCE;
        /* 茶勺数 */
        float teaSpoon = soupSpoon * TEA_SPOON_PER_SOUP_SPOON;
        
        /* 输出品脱、盎司、汤勺、茶勺为单位显示等价容量 */
        printf("               等价容量                  \n");
        printf("----------------------------------------\n");
        printf("品脱\t\t盎司\t\t汤勺\t\t茶勺\n");
        printf("----------------------------------------\n");
        printf("%.2f\t%.2f\t%.2f\t%.2f\n", pints, ounces, soupSpoon, teaSpoon);
        
        return 0;
    }

    程序输出结果

     

    展开全文
  • 在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。编写一个程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量。思考对于该程序,为何使用浮点类型比...

    在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。编写一个程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量。思考对于该程序,为何使用浮点类型比整数类型更合适?

    /*
    在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。
    编写一个程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量。
    思考对于该程序,为何使用浮点类型比整数类型更合适?
    */
    #include <stdio.h>
    int main(void)
    {
    	const int a_1_2 = 2;		//1品脱等于2杯
    	const int  b_8_1= 8;		//8盎司等于1杯
    	const int c_2_1 = 2;	//2大汤勺等于1盎司
    	const int d_3_1 = 3;		//3茶勺等于1大汤勺
    
    	float cups = 0;
    	printf("请输入杯数: ");
    	scanf("%f", &cups);
    
    	float PINT = cups / a_1_2;//品脱数
    	float OUNCE = cups * b_8_1;//盎司数
    	float SOUP = OUNCE / c_2_1;//大汤勺数
    	float TEA = SOUP / d_3_1;//茶勺数
    
    	printf("%.0f 杯对应的品脱数为: %.2f\n", cups, PINT);
    	printf("%.0f 杯对应的盎司数为: %.2f\n", cups, OUNCE);
    	printf("%.0f 杯对应的大汤勺数为: %.2f\n", cups, SOUP);
    	printf("%.0f 杯对应的茶勺数为: %.2f\n",cups,TEA);
    
    	return 0;
    }
    

     

    展开全文
  • 有一个充满水的8品脱的水壶和两个空水壶(容积分别是5品脱和3品脱)。通过将水壶完全倒满水和将水壶的水完全倒空这两种方式,在其中的一个水壶中得到4品脱的水。
  • NULL 博文链接:https://touch-2011.iteye.com/blog/1038893
  • 8.在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。编写一个程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量。思考对于该程序,为何使用浮点类型...
  • 数学问题:某人又12品脱的啤酒一瓶,想从中倒出6品脱, 但他没有6品脱的容器,仅有一个8品脱和一个5品脱的容 器,怎么倒才能将啤酒分成两个6品脱? 8x - 5y = 6 从12品脱的瓶中向8品脱的瓶中倒x次,并且将5品脱瓶中 ...
  • C语言数据类型题10道

    2021-08-26 17:03:26
    编写一个程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量、思考对于该程序,为何使用浮点类型比整数类型更合适。 程序: //体积转化 #include int main() { float pints,cups,ounces,soups,...
  • 交易我是这么想,也是这么做的,欢迎朋友们交流指导! 1.交易首先必须要从一开始正确。 2.做交易和有轨道开火车相似,不能越轨,火车开车前做好一切全面准备, 3.交易的核心工作看图,看到市场波动和自己交易系统...
  • 在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。编写一个程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量。思考对于该程序,为何使用浮点类型比...
  • [bzoj4242]水壶

    2018-09-26 22:49:00
    题面 给出一个\(n×m\)的网格图,相邻点距离为\(1\)。图上有\(p\)个建筑。每次在从一个建筑到另一个建筑的所有路径中,找出使经过的相邻建筑物间最大距离最小的路径,只用输出这个最大距离。 \(n,m\leq2000,p\leq2*...
  • C Primer Plus 第三章 课后答案

    千次阅读 2018-10-01 12:02:40
    8.在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。编写一个程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量。思考对于该程序,为何使用浮点类型...
  • ``` #include #include char s[6][6],str[100000]; int main() ... if((s[0][0]=='Z'&&s[0][1]=='\0')||(s[1][0]=='Z'&&s[1][1]=='\0')||(s[2][0]=='Z'&&s[2][1]=='\0')||(s[3][0]=='Z'&&s[3][1]=='\0')||(s[4][0]...
  • C Primer Plus 第三章编程练习

    千次阅读 2020-01-31 15:09:23
    } 运行结果 第八题 /*******************************************************************/ /***题 目:在美国的体积测量系统,1品脱等于2杯,1杯等于8盎司, ***/ /*** 1盎司等于2大汤勺,一大汤勺等于3茶勺。...
  • 贪心算法-泊松分酒问题

    千次阅读 2017-02-20 17:50:12
    泊松分酒是很著名的一道题,讲的是假设某人有12品脱的啤酒一瓶,想从中倒出六品脱,但是恰巧身边没有6品脱的容器,仅有一个8品脱和一个5品脱的容器,怎样倒才能将啤酒分为两个6品脱呢?代码:import java.util....
  • 倒水问题

    2019-06-09 14:58:00
    Q:有A B两个杯子,A杯子 7 L,B杯子 9 L,如何得到 1 L水? A:使用BFS或者DFS 边建立图,边搜索 有装 1 L水的杯子 的状态。(实际上该问题为多叉树结构,BFS类似于层次遍历,DFS类似于先续遍历,在遍历过程中建立...
  • 有一个充满水的8品脱的水壶和两个空水壶(容积分别是5品脱和3品脱)。通过将水壶完全倒满水和将水壶的水完全倒空这两种方式,在其中的一个水壶中得到4品脱的水。 一、算法思想 算法分析 采用的算法思想是将某个...
  • 算法设计与分析基础 第九章谜题

    千次阅读 2018-12-27 15:07:47
    1个相同的缸,其中一个有W品脱的水,而别的缸为空。你被允许执行下列操作:取两个缸,然后把他们中的水在两个缸之间均分。目标是通过执行上述一系列操作,使得初始有水的缸中水最小化。完成这个任务的最好方法是什么...
  • 波瓦松的分酒趣题

    千次阅读 2017-05-18 17:00:28
    法国著名数学家波瓦松在青年时代研究过一个有趣的数学问题:某人有12品脱的啤酒瓶,想从中倒出6品脱,但他没有6品脱的容器,仅有一个8品脱和一个5品脱的容器,怎样倒才能将啤酒分为两个6品脱呢? *问题分析与算法设计  ...
  • 有一个充满水的8品脱的水壶和两个空水壶(容积分别是5品脱和3品脱)。通过将水壶完全倒满水和将水壶的水完全倒空这两种方式,在其中的一个水壶中得到4品脱的水。 代码如下:详细介绍见注释,省略讲解... #include...
  • TaproomReact

    2021-02-16 00:06:27
    用户还可以跟踪售出多少品脱的小桶。 该项目是通过。 组件图 用户故事 作为用户,我想查看所有可用小桶的列表/菜单。 对于每个小桶,我想查看其剩余的名称,品牌,价格,alcoholContent和品脱。 作为用户,我想...
  • 作为用户,我想看看小桶中还剩下多少品脱。 作为用户,我希望每当出售一品脱小桶时,都可以单击小桶旁边的按钮。 这样可以将剩余的品脱数量减少1。品脱不能低于0。 组件图 设置/安装要求 请访问以下链接: : 将...
  • React-Tap-Room

    2021-05-02 10:59:25
    每个桶均显示其名称,类型,啤酒厂,价格,酒精含量和品脱数 通过管理路径添加新桶 点击管理员路径中的小桶以获取品脱详细信息 执照 该程序是免费软件:您可以重新分发和/或修改 根据GNU发布的GNU通用公共许可的条款...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 469
精华内容 187
关键字:

品脱