最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析java貪心算法

 更新時(shí)間:2015年02月02日 10:02:01   投稿:hebedich  
這篇文章簡(jiǎn)單主要介紹了java貪心算法,包含貪心算法的基本思路,性質(zhì),以及實(shí)現(xiàn)示例,有需要的小伙伴參考下

貪心算法的基本思路

   1.建立數(shù)學(xué)模型來(lái)描述問(wèn)題?!?/p>

 2.把求解的問(wèn)題分成若干個(gè)子問(wèn)題?!?/p>

 3.對(duì)每一子問(wèn)題求解,得到子問(wèn)題的局部最優(yōu)解。 

 4.把子問(wèn)題的解局部最優(yōu)解合成原來(lái)解問(wèn)題的一個(gè)解?!?/p>

 實(shí)現(xiàn)該算法的過(guò)程: 

 從問(wèn)題的某一初始解出發(fā); 

 while 能朝給定總目標(biāo)前進(jìn)一步 do 

 求出可行解的一個(gè)解元素;  

由所有解元素組合成問(wèn)題的一個(gè)可行解。

貪心選擇性質(zhì)

      所謂貪心選擇性質(zhì)是指所求問(wèn)題的整體最優(yōu)解可以通過(guò)一系列局部最優(yōu)的選擇,換句話說(shuō),當(dāng)考慮做何種選擇的時(shí)候,我們只考慮對(duì)當(dāng)前問(wèn)題最佳的選擇而不考慮子問(wèn)題的結(jié)果。這是貪心算法可行的第一個(gè)基本要素。
貪心算法以迭代的方式作出相繼的貪心選擇,每作一次貪心選擇就將所求問(wèn)題簡(jiǎn)化為規(guī)模更小的子問(wèn)題。
      對(duì)于一個(gè)具體問(wèn)題,要確定它是否具有貪心選擇性質(zhì),必須證明每一步所作的貪心選擇最終導(dǎo)致問(wèn)題的整體最優(yōu)解。

2.最優(yōu)子結(jié)構(gòu)性質(zhì)
       當(dāng)一個(gè)問(wèn)題的最優(yōu)解包含其子問(wèn)題的最優(yōu)解時(shí),稱此問(wèn)題具有最優(yōu)子結(jié)構(gòu)性質(zhì)。問(wèn)題的最優(yōu)子結(jié)構(gòu)性質(zhì)是該問(wèn)題可用貪心算法求解的關(guān)鍵特征。
貪心法的一般流程

復(fù)制代碼 代碼如下:

Greedy(C)  //C是問(wèn)題的輸入集合即候選集合
{
    S={ };  //初始解集合為空集
    while (not solution(S))  //集合S沒有構(gòu)成問(wèn)題的一個(gè)解
    {
       x=select(C);    //在候選集合C中做貪心選擇
       if feasible(S, x)  //判斷集合S中加入x后的解是否可行
          S=S+{x};
          C=C-{x};
    }
   return S;

問(wèn)題描述:

當(dāng)前有面值分別為2角5分,1角,5分,1分的硬幣,請(qǐng)給出找n分錢的最佳方案(要求找出的硬幣數(shù)目最少)

問(wèn)題分析:

根據(jù)常識(shí),我們到店里買東西找錢時(shí),老板總是先給我們最大面值的,要是不夠再找面值小一點(diǎn)的,直到找滿為止。如果老板都給你找分?jǐn)?shù)的或者幾角的,那你肯定不干,另外,他也可能沒有那么多零碎的錢給你找。其實(shí)這就是一個(gè)典型的貪心選擇問(wèn)題。

問(wèn)題的算法設(shè)計(jì)與實(shí)現(xiàn)

先舉個(gè)例子,假如老板要找給我99分錢,他有上面的面值分別為25,10,5,1的硬幣數(shù),為了找給我最少的硬幣數(shù),那么他是不是該這樣找呢,先看看該找多少個(gè)25分的,誒99/25=3,好像是3個(gè),要是4個(gè)的話,我們還得再給老板一個(gè)1分的,我不干,那么老板只能給我3個(gè)25分的拉,由于還少給我24,所以還得給我2個(gè)10分的和4個(gè)1分。

復(fù)制代碼 代碼如下:

//找零錢算法
//輸入:數(shù)組m,依次存放從大到小排列的面值數(shù),n為需要找的錢數(shù),單位全部為分
//輸出:數(shù)組num,對(duì)照數(shù)組m中的面值存放不同面值的硬幣的個(gè)數(shù),就找錢方案
 public static int[] zhaoqian(int m[],int n)
 {
        int k=m.length;
        int[] num=new int[k];
        for(int i=0;i<k;i++)
        {
                num<i>=n/m<i>;
                n=n%m<i>;
        }
        return num;
 }

復(fù)制代碼 代碼如下:

public class zhaoqian
{
 public static void main(String[] args)
 {
        int m[]={25,10,5,1};
        int n=99;
        int[] num=new int[m.length];
        num=zhaoqian(m,n);
        System.out.println(n+"的找錢方案:");
        for(int i=0;i<m.length;i++)
        System.out.println(num<i>+"枚"+m<i>+"面值");
 }
 public static int[] zhaoqian(int m[],int n)
 {
        int k=m.length;
        int[] num=new int[k];
        for(int i=0;i<k;i++)
        {
                num<i>=n/m<i>;
                n=n%m<i>;
        }
        return num;
 }
}

以上所述就是本文的所有內(nèi)容了,希望小伙伴們能夠喜歡。

相關(guān)文章

  • java日志門面之JCL和SLF4J詳解

    java日志門面之JCL和SLF4J詳解

    這篇文章主要給大家介紹了關(guān)于java日志門面之JCL和SLF4J的相關(guān)資料,在系統(tǒng)開發(fā)過(guò)程中日志框架的選擇與更換是一大挑戰(zhàn),日志門面的概念,如JCL和SLF4J,允許開發(fā)者面向接口編程,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • 詳解Java實(shí)現(xiàn)設(shè)計(jì)模式之責(zé)任鏈模式

    詳解Java實(shí)現(xiàn)設(shè)計(jì)模式之責(zé)任鏈模式

    責(zé)任鏈模式是一種行為設(shè)計(jì)模式,允許你將請(qǐng)求沿著處理鏈發(fā)送,然后處理者都可對(duì)其進(jìn)行處理,完成后可以再將其傳遞給下一個(gè)處理者。下面將會(huì)舉例說(shuō)明什么是責(zé)任鏈模式,責(zé)任鏈模式該如何使用
    2021-06-06
  • Nginx啟用壓縮及開啟gzip 壓縮的方法

    Nginx啟用壓縮及開啟gzip 壓縮的方法

    這篇文章主要介紹了Nginx啟用壓縮及開啟gzip 壓縮的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • springboot3.X 無(wú)法解析parameter參數(shù)問(wèn)題分析

    springboot3.X 無(wú)法解析parameter參數(shù)問(wèn)題分析

    本文介紹了Spring Boot 3.2.1版本中調(diào)用接口時(shí)出現(xiàn)的參數(shù)解析問(wèn)題,該錯(cuò)誤是由Spring新版本加強(qiáng)的錯(cuò)誤校驗(yàn)和報(bào)錯(cuò)提示導(dǎo)致的,在Spring 6.1之后,官方要求URL中的傳參必須使用`@PathVariable`聲明用于接收的變量,而不能省略`@RequestParam`注解,感興趣的朋友一起看看吧
    2025-03-03
  • Java經(jīng)典設(shè)計(jì)模式之策略模式原理與用法詳解

    Java經(jīng)典設(shè)計(jì)模式之策略模式原理與用法詳解

    這篇文章主要介紹了Java經(jīng)典設(shè)計(jì)模式之策略模式,簡(jiǎn)單說(shuō)明了策略模式的概念、原理并結(jié)合實(shí)例形式分析了java策略模式的具有用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-08-08
  • Java多線程 實(shí)例解析

    Java多線程 實(shí)例解析

    這篇文章主要介紹了Java多線程 實(shí)例解析,需要的朋友可以參考下
    2017-04-04
  • @JsonFormat?和?@DateTimeFormat?時(shí)間格式化注解(場(chǎng)景示例代碼)

    @JsonFormat?和?@DateTimeFormat?時(shí)間格式化注解(場(chǎng)景示例代碼)

    這篇文章主要介紹了@JsonFormat和@DateTimeFormat時(shí)間格式化注解,本文通過(guò)場(chǎng)景示例代碼詳解給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • springMVC前臺(tái)傳數(shù)組類型,后臺(tái)用list類型接收實(shí)例代碼

    springMVC前臺(tái)傳數(shù)組類型,后臺(tái)用list類型接收實(shí)例代碼

    這篇文章主要介紹了springMVC前臺(tái)傳數(shù)組類型,后臺(tái)用list類型接收實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Java中stream處理中map與flatMap的比較和使用案例

    Java中stream處理中map與flatMap的比較和使用案例

    這篇文章主要介紹了Java中stream處理中map與flatMap的比較和使用案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Spring注解@Conditional案例解析

    Spring注解@Conditional案例解析

    這篇文章主要介紹了Spring注解@Conditional案例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論

商都县| 青岛市| 武威市| 库伦旗| 兴和县| 青神县| 临安市| 呼图壁县| 南和县| 宜良县| 齐齐哈尔市| 杭锦后旗| 新闻| 格尔木市| 阳朔县| 泊头市| 电白县| 历史| 临漳县| 方正县| 琼中| 玉龙| 巴里| 德保县| 威信县| 平利县| 梁河县| 安岳县| 保康县| 浙江省| 扎赉特旗| 名山县| 固安县| 临沭县| 奉化市| 德令哈市| 荆门市| 贞丰县| 西贡区| 浦县| 鸡东县|