说大题,第一题水,代码:

/**
        Author: SpringHack - springhack@live.cn
        Last modified: 2016-09-29 19:42:20
        Filename: main.cpp
        Description: Created by SpringHack using vim automatically.
**/
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>

using namespace std;

char S[100010], T[100010], str[260];

int main()
{
    memset(str, 0, sizeof(0));
    char ch = 'a', cc;
    int count = 0;
    while (cc = getchar())
    {
        if (cc >= 'a' && cc <= 'z')
            S[count++] = cc;
        else
            break;
    }
    S[count] = '\n';
    for (int i=0;i<count;++i)
    {
        if (str[S[i]] == 0)
        {
            str[S[i]] = ch;
            T[i] = ch;
            ch++;
        } else {
            T[i] = str[S[i]];
        }
    }
    T[count] = '\0';
    for (int i=0;i<count;++i)
        putchar(T[i]);
    return 0;
}

第二题WA,代码仅做记录:

/**
var read_line = function () {
    var ptr = 0;
    var s = [
        '3',
        'ABC',
        'CBA',
        'AB'
    ];
    return function () {
        return s[ptr++];
    };
}();
**/

function lcs(x, y)
{
	for (var i=0;i<Math.min(x.length, y.length);++i)
    	if (x.substring(x.length - i - 1) == y.substring(0, i + 1))
              return y.substring(0, i + 1);
    return '';
}

var n = parseInt(read_line());
var str = [];
var f = [];
for (var i=0;i<n;++i)
      f[i] = [];

for (var i=0;i<n;++i)
	str.push(read_line());
for (var i=0;i<n;++i)
      for (var j=0;j<n;++j)
      {
            var ss = lcs(str[i], str[j]);
            f[i][j] = ss.length;
      }

var max = 0;
var now = 0;
var vis = [];

var qeeue = [];

function dfs(node ,deep)
{
    if (deep == n - 1)
    {
        if (now > max)
            max = now;
    } else {
        for (var i=0;i<n;++i)
            if (!vis[i] && i != node)
            {
                now += f[node][i];
                vis[i] = true;
                //qeeue.push(str[i]);
                dfs(i, deep + 1);
                //qeeue.pop();
                vis[i] = false;
                now -= f[node][i];
            }
    }
}

for (var i=0;i<n;++i)
{
    now = 0;
    vis[i] = true;
    //qeeue.push(str[i]);
	dfs(i, 0);
    qeeue.pop();
    //vis[i] = false;
}
      
var ret = 0;
str.forEach(function (item) {
	ret += item.length;
});

console.log(ret - max);