首页 > 学院 > 开发设计 > 正文

算法提高 P1003

2019-11-08 01:40:22
字体:
来源:转载
供稿:网友

1008: 算法提高 P1003

时间限制: 1 Sec  内存限制: 128 MB提交: 6  解决: 2[提交][状态][讨论版]

题目描述

作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词。不过,有些狡猾的犯罪嫌疑人会 改变某些单词的字母顺序,以逃避检查。请编写一个程序,发现这种调整过顺序的关键词。程序的输入有两行,第一行是关键词列表,第二行是待检查的句子。程序 的输出为在该句子中所找到的经过顺序调整的关键词。(单词全部为小写,单词之间以一个空格分隔,每一行的单词个数不限)

输入

guns mines missilesaameric ssell snug dan iimsssle ot sit neeemi

输出

guns missiles

样例输入

guns mines missilesaameric ssell snug dan iimsssle ot sit neeemi 

样例输出

guns missiles
题目链接
点击打开链接
简单粗暴的方法,就是代码复杂。
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int main(){    int key[1000][26];  ///用来存放每个关键词的某个单词的个数    int sen[26];  ///存放检索的句子中某个单词的个数    char str1[1000];   ///存放第一个字符串    char str2[1000];   ///存放第二个字符串    char temp[1000][100];  ///存放关键词    int a[1000];    int i,j,k;    while(gets(str1))    {        gets(str2);        memset(a,0,sizeof(a));        memset(key,0,sizeof(key));        j=0;        for(i = 0; i < strlen(str1); i++)  ///关键词        {            k = 0;            while(str1[i]!=' '&&str1[i]!='/0')            {                temp[j][k]=str1[i];                key[j][str1[i]-'a']++;                i++;                k++;            }            temp[j][k]='/0';            j++;        }        for(i = 0; i < strlen(str2); i++)        {            memset(sen,0,sizeof(sen));            while(str2[i]!=' '&&str2[i]!='/0')            {                sen[str2[i]-'a']++;                i++;            }            for(k = 0; k < j; k++)            {                if(a[k]==0)                {                    int flag = 1;                    for(int t1=0;t1<26;t1++)                    {                        if(key[k][t1]!=sen[t1])                        {                            flag = 0;                            break;                        }                    }                    if(flag)                        a[k]=1;                }            }        }        for(i = 0;i < j; i++)        {            if(a[i])            {                PRintf("%s",temp[i]);                break;            }        }        i++;        for(;i < j; i++)        {            if(a[i])            {                printf(" %s",temp[i]);            }        }        printf("/n");    }    return 0;}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表