国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java編程實現求解八枚銀幣代碼分享

java編程實現求解八枚銀幣代碼分享

2021-02-25 22:46ljtyzhr Java教程

這篇文章主要介紹了java編程實現求解八枚銀幣代碼分享,具有一定參考價值,需要的朋友可以了解下。

1、引言

筆者在大學的算法競賽中,遇到過這樣的一個題目,現在拿出來與大家分享一下:現在有現有八枚銀幣abcdefgh,已知其中一枚是假幣,其重量不同于真幣,但不知是較輕或較重,如何使用天平以最少的比較次數,決定出哪枚是假幣,并得知假幣比真幣較輕或較重。

2、分析

如果本題目只是很單純的求解假幣是哪一個,問題倒并不是很復雜,只需要回溯遞歸便可求得結果。問題的難點在意,我們需要用最少的步驟!!!

比之以前的數據結構問題,有遞歸,回溯,我們今天可能要接觸一個新的概念,叫做樹。顧名思義,數結構就是說我們的分析圖示像樹一樣,有分支節點等各種信息。樹結構是數據結構中的一個較大的章節,不在我們的討論之中,在本題目當中,我們會介紹樹的一個小小的分子,決策樹。

我們先建立一下,八個銀幣求解的數學模型。一個簡單的狀況是這樣的,我們將銀幣依次命名為abcdefg等,我們比較a+b+c與d+e+f,如果相等,則假幣必是g或h,我們先比較g或h哪個較重,如果g較重,再與a比較(a是真幣),如果g等于a,則g為真幣,則h為假幣,由于h比g輕而g是真幣,則h假幣的重量比真幣輕。

如果不相等呢?又是何種情況,我們將依次分支回溯比較,直到得到最終的答案!

3、示例圖

根據上面的分析,我們可以有一個完整的決策樹圖示:

java編程實現求解八枚銀幣代碼分享

4、代碼

java" id="highlighter_303679">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class coins {
  private int[] coins;
   
  public coins() {
    coins = new int[8];
    for(int i = 0; i < 8; i++) 
      coins[i] = 10
  }
   
  public void setfake(int weight) {
    coins[(int) (math.random() * 7)] = weight;
  }
   
  public void fake() {
    if(coins[0]+coins[1]+coins[2] == 
      coins[3]+coins[4]+coins[5]) { 
      if(coins[6] > coins[7]) 
        compare(6, 7, 0); 
      else
        compare(7, 6, 0); 
    
    else if(coins[0]+coins[1]+coins[2] > 
        coins[3]+coins[4]+coins[5]) { 
      if(coins[0]+coins[3] == coins[1]+coins[4]) 
        compare(2, 5, 0); 
      else if(coins[0]+coins[3] > coins[1]+coins[4]) 
        compare(0, 4, 1); 
      if(coins[0]+coins[3] < coins[1]+coins[4]) 
        compare(1, 3, 0); 
    
    else if(coins[0]+coins[1]+coins[2] < 
        coins[3]+coins[4]+coins[5]) { 
      if(coins[0]+coins[3] == coins[1]+coins[4]) 
        compare(5, 2, 0); 
      else if(coins[0]+coins[3] > coins[1]+coins[4]) 
        compare(3, 1, 0); 
      if(coins[0]+coins[3] < coins[1]+coins[4]) 
        compare(4, 0, 1); 
    
  }
   
  protected void compare(int i, int j, int k) {
    if(coins[i] > coins[k]) 
      system.out.print("\n假幣 " + (i+1) + " 較重"); 
    else
      system.out.print("\n假幣 " + (j+1) + " 較輕"); 
  }
   
  public static void main(string[] args) {
    if(args.length == 0) {
      system.out.println("輸入假幣重量(比10大或小)");
      system.out.println("ex. java coins 5");
      return;
    }
     
    coins eightcoins = new coins();
    eightcoins.setfake(integer.parseint(args[0]));
    eightcoins.fake();
  }
}

結果:

輸入假幣重量(比10大或小)
ex. java coins 5

這里是一段通用的解題方法,大家可以仔細琢磨代碼,對于本段代碼,上面的分析已經足夠,剩下的就要大家自己琢磨學習了,這樣才能深刻理解。

總結

以上就是本文關于java編程實現求解八枚銀幣代碼分享的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/ljtyzhr/article/details/39274059

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕日韩在线 | 蜜桃成人 | 99久久视频 | 亚洲一区二区三 | 一区二区视频在线观看 | 我和我的祖国电影在线观看免费版高清 | 久久久久久91亚洲精品中文字幕 | 久久久www成人免费精品 | 久草精品在线 | 91精品久久久久久久91蜜桃 | 亚洲最大的黄色网 | 国产精品99久久 | 亚洲好看站 | 精品国产乱码久久久久久影片 | 中文字幕av亚洲精品一部二部 | 亚洲乱码日产精品一二三 | 91精品国产高清久久久久久久久 | 亚洲中午字幕 | 久久天天 | 91九色在线 | 亚洲乱码国产乱码精品精的特点 | 黄色免费电影网站 | 国产亚洲精品精品国产亚洲综合 | 久久国产精品一区二区三区 | 欧美视频精品在线观看 | 日本好好热视频 | 人人射| 国产精品一卡二卡三卡 | 亚洲欧美在线一区 | 欧美极品一区二区 | 日韩欧美视频 | 亚洲一二 | 欧美成人免费 | 欧美日韩在线一区二区三区 | 91精品国产综合久久久久久丝袜 | 九色porny丨国产精品 | 国产一区二区三区在线免费观看 | 久久久久国产精品午夜一区 | 亚洲高清在线观看 | 超碰在线91 | 国产美女一区 |