Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

求测试数据,代码如下

Posted by CodeChomper at 2010-08-06 11:45:32 on Problem 1035
#include <stdio.h>
#include <string.h>
#include <vector>
#include <algorithm>

using namespace std;

typedef struct
{
    char name[15];
    int num;
}Word;

struct
{
    int count;
    Word word[10000+10];
}dic[15+1];

vector <Word> result;

bool Comp(const Word &a, const Word &b)
{
    return a.num<b.num;
}

int exist(char word[], int length)
{
    int i;

    for (i=0; i<dic[length].count; i++)
      if (strcmp(dic[length].word[i].name, word) == 0)
        return 1;

    return 0;
}

int del(char word[], int length)
{
    if (length == 15) return 0;

    int i, j, k, flag = 0;
    char dicWord[15];
    Word _word;

    for (i=0; i<dic[length+1].count; i++)
    {
        strcpy(dicWord, dic[length+1].word[i].name);

        for (j=0, k=0; j<strlen(dicWord); j++)
            if (dicWord[j] == word[k])
               k++;
        if (k == length)
        {
            strcpy(_word.name, dicWord);
            _word.num = dic[length+1].word[i].num;
            result.push_back(_word);
            //printf(" %s", dicWord);
            flag++;
        }
    }

    if (flag) return 1;
    else return 0;
}


int insert(char word[], int length)
{
    if (length == 1) return 0;

    int i, j, k, flag = 0;
    char dicWord[15];
    Word _word;

    for (i=0; i<dic[length-1].count; i++)
    {
        strcpy(dicWord, dic[length-1].word[i].name);

        for (j=0, k=0; j<length; j++)
            if (word[j] == dicWord[k])
               k++;
        if (k == strlen(dicWord))
        {
            strcpy(_word.name, dicWord);
            _word.num = dic[length-1].word[i].num;
            result.push_back(_word);
            //printf(" %s", dicWord);
            flag++;
        }
    }

    if (flag) return 1;
    else return 0;
}


int replace(char word[], int length)
{
    int i, j, differ = 0, flag = 0;
    char dicWord[15];
    Word _word;

    for (i=0; i<dic[length].count; i++)
    {
        strcpy(dicWord, dic[length].word[i].name);

        for (j=0; j<length; j++)
           if (dicWord[j] != word[j])
              differ++;

        if (differ == 1)
        {
            strcpy(_word.name, dicWord);
            _word.num = dic[length].word[i].num;
            result.push_back(_word);
            //printf(" %s", dicWord);
            flag++;
        }
    }

    if (flag) return 1;
    else return 0;
}

int main()
{
    char word[15];
    int length, count = 0, num = 0;

    while (scanf("%s", word) && word[0] != '#')
    {
        length = strlen(word);
        strcpy(dic[length].word[dic[length].count].name, word);
        dic[length].word[dic[length].count++].num = num++;
    }

    while (scanf("%s", word) && word[0] != '#')
    {
        length = strlen(word);
        if (exist(word, length))
        {
            printf("%s is correct\n", word);
            continue;
        }
        printf("%s:", word);

        insert(word, length);
        replace(word, length);
        del(word, length);

        if (!result.empty())
        {
            sort(result.begin(), result.end(), Comp);

            vector <Word>::iterator it;
            for (it=result.begin(); it!=result.end(); it++)
               printf(" %s", (*it).name);
        }
        result.clear();
        printf("\n");
    }
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator