程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> uva--10602+貪心

uva--10602+貪心

編輯:C++入門知識

uva--10602+貪心


題意:

某公司開發了一個編輯器,支持兩條語音命令:1.重復最後一個單詞,2.刪除最後一個單詞的最後一個字母。給你一系列的單詞,問利用編輯器的功能最少需要輸入多少個字母就可以將所有單詞輸入;要求第一個單詞一定要第一個輸入,其余單詞不限順序。

思路:

輸入第一個單詞後,我們可以怎麼樣選擇能使得輸入的字母數最少?當然我們需要選擇和第一個單詞有最長公共前綴的單詞;這就是貪心的策略:每次都選擇和上一次輸入單詞有最長公共前綴的單詞輸入。


代碼如下:


#include
#include
#include
using namespace std;

int cnt(char *str1,char *str2)
{
     int len1=strlen(str1),i;
     for(i=0;i=max1)
                {
                    max1=num;
                    temp=j;
                }
            }
            cnt1++;
            sum+=(strlen(str[temp])-max1);
            vis[temp]=1;
            ans[k++]=temp;
            i=temp;
        }
        printf("%d\n",sum);
        for(i=0;i


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved