zoukankan      html  css  js  c++  java
  • UVa10602 Editor Nottoobad

    题目大意

    给定N个单词,要求你用Nottoobad编辑器进行输入,如果你当前需要输入的单词与之前一个已经输入的单词有公共部分,那么这公共部分是不需要输入的,只需要粘贴复制即可,第一个单词必须全部输入,其他的单词可以按任意顺序输入,要求你安排一个输入顺序,使得输入操作的次数最少。

    题解

    一个很简单的贪心,每次输入选择与前一个输入的单词的公共部分长度最长的单词即可,如果公共部分为0,则输入任意一个单词都行。

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define MAXN 105
    int f[MAXN];
    char s[MAXN][MAXN],ss[MAXN][MAXN];
    long ans;
    int main(void)
    {
        int i,j,n,T,t,maxs,k;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            memset(f,0,sizeof(f));
            for(i=0; i<n; i++)
            {
                getchar();
                scanf("%s",s[i]);
    
            }
            ans=strlen(s[0]);
            strcpy(ss[0],s[0]);
            f[0]=1;
            for(i=1; i<n; i++)
            {
                maxs=0;
                for(j=0; j<n; j++)
                    if(!f[j])
                    {
                        t=0;
                        while((s[j][t]==ss[i-1][t])&&(t<strlen(ss[i-1]))) t++;
                        if(t>maxs)
                        {
                            k=j;
                            maxs=t;
    
                        }
                    }
                if(maxs)
                {
                    ans+=strlen(s[k])-maxs;
                    strcpy(ss[i],s[k]);
                    f[k]=1;
                }
                else
                {
                    k=1;
                    while(f[k]&&k<n) k++;
                    if(k<n)
                    {
                        ans+=strlen(s[k]);
                        strcpy(ss[i],s[k]);
                        f[k]=1;
                    }
                }
            }
            printf("%ld\n",ans);
            for(i=0; i<n; i++)
                printf("%s\n",ss[i]);
        }
        return 0;
    }
  • 相关阅读:
    malloc和new的区别
    Http协议解析
    Linux基础命令-history
    Linux基础命令-last
    Linux基础命令-who
    Linux基础命令-free
    Linux基础命令-uptime
    Linux基础命令-uname
    Linux基础命令-ifconfig
    Linux基础命令-killall
  • 原文地址:https://www.cnblogs.com/zjbztianya/p/3007500.html
Copyright © 2011-2022 走看看