• UVA 10602 Editor Nottoobad(贪心)


    Problem C

    EDITOR NOTTOOBAD

    Company Macrohard has released it’s new version of editor Nottoobad, which can understand a few voice commands. Unfortunately, there are only two voice commands that it can understand – “repeat the last word”, “delete the last symbol”. However, when one uses “repeat the last word” the editor inserts a blank that separates the words. But the company claims that it is possible to type much faster – simply by less number of presses. For example, such a phrase like “this thin thing” requires only 6 presses of the keyboard.

    Action

    Number

    of presses

    Content of the document

    Press "this"

    4

    This

    Say “repeat the last word”

    0

    this this

    Say “delete the last symbol”

    0

    this thi

    Press "n"

    1

    this thin

    Say “repeat the last word”

    0

    this thin thin

    Press "g"

    1

    this thin thing

    In order to increase the popularity of it’s product the company decided to organize a contest where the winner will be a person who types a given number of words with minimum number of presses. Moreover, the first word must be typed first, and all the others can be typed in arbitrary order. So, if words “apple”, “plum” and “apricote” must be typed, the word “apple” must be typed first, and the words “plum” and “apricote” can be switched. And the most important for you – you are going to take part in the contest and you have a good friend in the company, who told you the word which will be used in the contest. You want be a winner J, so you have to write a program which finds the order of the words, where the number of presses will be minimum.

    Input

    The first line of the input contains the T (1≤T≤15) the number of test cases. Then T test cases follow. The first line of each test contains a number N (1≤N≤100) – the number of words that must be pressed. Next N lines contain words – sequences of small Latin letters, not longer than 100 symbols. Remember that the first word must be pressed first!

    Output

    The first line of the output contains number X - the minimum number of presses, which one has to do in order to type all the words using editor Nottoobad. Next N lines contain the words in that minimum order. If there are several solutions, you can output one of them.

    Sample Input

    Sample Output

    3

    3

    this

    thin

    thing

    4

    popcorn

    apple

    apricote

    plum

    2

    hello

    hello

    6

    this

    thin

    thing

    21

    popcorn

    plum

    apricote

    apple

    5

    hello

    hello


    题意:有一台声控机。有两种操作。复制单词和删除最后一个。要求出所需最少的按键操作打出所有单词。。

    思路:贪心。。按字典序排列。。尽量去使用声控机。就可以减少按键次数。。每次保留前面相同的前几个字符。。然后后面的单词用声控机删除掉。剩下不同的单词用按键去按。。这样做按键操作是最少的。

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    
    int t, n, sum;
    char ci[105][105];
    
    int cmp(const void *a, const void *b) {
        return strcmp((char*) a, (char*) b);
    }
    int main() {
        scanf("%d", &t);
        while (t --) {
    	sum = 0;
    	memset(ci, 0, sizeof(ci));
    	scanf("%d", &n);
    	getchar();
    	for (int i = 0; i < n; i ++)
    	    gets(ci[i]);
    	qsort(ci, n, sizeof(ci[0]), cmp);
    	sum = strlen(ci[0]);
    	for (int i = 1; i < n; i ++) {
    	    int len;
    	    for (len = 0; len < strlen(ci[i]); len ++) {
    		if (ci[i - 1][len] != ci[i][len])
    		    break;
    	    }
    	    sum += strlen(ci[i]) - len;
    	}
    	printf("%d
    ", sum);
    	for (int i = 0; i < n; i ++)
    	    printf("%s
    ", ci[i]);
        }
        return 0;
    }


  • 相关阅读:
    如何清除去掉PPT文字下的波浪线
    使用SQLyog备份还原数据库
    excel冻结首行
    查看Mysql版本号
    java23种设计模式
    Elasticsearch Java High Level REST Client(Bulk API)
    Elasticsearch Java High Level REST Client工具类
    springboot2.0整合es报错 nested exception is java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]
    ElasticSearch 应用开发Transport Client和Rest Client网络协议
    单例和多例的区别
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3268489.html
Copyright © 2020-2023  润新知