la 5739

来源:互联网 发布:如何利用月经减肥 知乎 编辑:程序博客网 时间:2024/04/27 21:15

题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3750



#include <cstdio>#include <cstring>#include <cmath>#include <map>#include <string>using namespace std;char a[1005];char b[85];char c[205][85]; int numc;int d[205];map<string, int>  m;string s;int main(){    int h, i, j, n, maxlen, cas = 1;    int cnt, numb, lastb;    while(~scanf("%d %d", &n, &maxlen))    {        if(n + maxlen == 0) break;        getchar();        printf("Case %d\n", cas++);        numc = 0;        memset(d, 0, sizeof(d));        for(h = 0; h < n; h++)        {            gets(a); cnt = numb = 0;            //.........            bool q = false;            for(i = 0; a[i] != 0; i++)            {                if(q == false && ((a[i] >= 'A' && a[i] <= 'Z') || (a[i] >= 'a' && a[i] <= 'z')) )                {                    b[numb++] = (a[i] <= 'Z' ? a[i] + 32 : a[i]);                    q = true;                }                if(a[i] == ' ') {cnt++; lastb = i;}            }            for(i = lastb + 1; a[i]  != 0; i++)            {                if(a[i] >= 'A' && a[i] <= 'Z') b[numb++] = a[i] + 32;                else if(a[i] >= 'a' && a[i] <= 'z') b[numb++] = a[i];                if(numb == maxlen) break;            }            b[numb] = 0;            strcpy(c[numc++], b);        }//end h        bool p;        for(i = 0; i < n; i++)        {            //FIRST TURN            p = true;            for(j = 0; j < i; j++)            {                if(strcmp(c[i], c[j]) == 0 && d[j] == 0) {p = false; break;}            }            if(p == true) {printf("%s\n", c[i]); d[i] = 0; continue;} //无重复            //ELSE IN SECOND TURN            if(strlen(c[i]) == maxlen) c[i][strlen(c[i])- 1] = 0;            p = true;            for(j = i - 1; j >= 0; j--)            {                if(strcmp(c[i], c[j]) == 0 && d[j] >= 1 && d[j] <= 9) {p = false; break;}            }            if(p == false && d[j] < 9)  //有重复            {                printf("%s%d\n", c[i], d[j] + 1);                d[i] = d[j] + 1;                continue;            }            else if(p == true) //没重复            {                printf("%s1\n", c[i]);                d[i] = 1;                continue;            }            //ELSE IN THIRD TURN            if(strlen(c[i]) + 1 == maxlen) c[i][strlen(c[i]) - 1] = 0;            p = true;            for(j = i - 1; j >= 0; j--)            {                if(strcmp(c[i], c[j]) == 0 && d[j] >= 10) {p = false; break;}            }            if(p == false) //有重复            {                printf("%s%d\n", c[i], d[j] + 1);                d[i] = d[j] + 1;            }            else            {                printf("%s10\n", c[i]);                d[i] = 10;            }        }    }    return 0;}


0 0
原创粉丝点击