[HihoCoder]#1039 : 字符消除

来源:互联网 发布:铭万网络到底有多差 编辑:程序博客网 时间:2024/04/30 06:30

华电北风吹
天津大学认知计算与应用重点实验室
2016-06-24

题目链接:
http://hihocoder.com/problemset/problem/1039

题目分析:

// problem1039.cpp : 定义控制台应用程序的入口点。// #1039 : 字符消除// http://hihocoder.com/problemset/problem/1039// 张正义 2016-04-12#include "stdafx.h"// 暴力破解 已 Accept 时间复杂度 n^3#include <iostream>#include <cstring>using namespace std;char input[102];char insert[102];int func(int length){    int n = length;    bool flag = true;    while (flag)    {        flag = false;        int i = 0, p = -1;        while (i < n)        {            int k = i + 1;            while ((k < n) && (insert[k] == insert[i]))                k++;            if (k == i + 1)            {                p++;                insert[p] = insert[i];                i = k;            }            else            {                i = k;                flag = true;            }        }        insert[p + 1] = '\0';        n = p + 1;    }    return n;}int main(){    int T;    cin >> T;    char choice[3] = { 'A', 'B', 'C' };    for (int num = 0; num < T; num++)    {        cin >> input;        int length = strlen(input);        int result = 200;        for (int i = 0; i < length; i++)        {            for (int j = 0; j < 3; j++)            {                for (int k = 0; k < i; k++)                {                    insert[k] = input[k];                }                for (int k = length - 1; k >= i; k--)                {                    insert[k + 1] = input[k];                }                insert[i] = choice[j];                int temp = func(length + 1);                result = result < temp ? result : temp;            }        }        cout << length + 1 - result << endl;    }    return 0;}

解题报告:

0 0
原创粉丝点击