注册 登录
编程论坛 C++教室

这个要怎么实现啊?

littlevic 发布于 2011-07-05 16:39, 489 次点击
我国有34个省级行政区,其中省23个(辽宁,吉林,黑龙江,河北,山西,陕西,山东,安徽,江苏,浙江,河南,湖北,湖南,江西,台湾,福建,云南,海南,四川,贵州,广东,甘肃,青海),自治区5个(西藏,新疆,广西,内蒙古,宁夏),直辖市4个(北京,天津,上海,重庆)。特别行政区2个(香港,澳门)。写一个程序实现用户输入一个查询字符串后,返回满足条件的行政区列表。搜索规则如下:
    i) 返回满足条件的行政区要求至少包括一个查询字符串的每一个字符一次;
    ii) 行政区和查询字符串是大小写不敏感;
   iii) 查询字符串的字符序列的顺序并不重要。
例如,如果用户输入“ih”或者“hi”,则搜索结果如下:“Hubei”, “Heilongjiang”, “Hebei”, “Shanxi”, “Shaanxi”, “Anhui”, “Zhejiang”, “Hainan”, “Guizhou”, “Qinghai”, “Shanghai”, “Chongqing”。
2 回复
#2
lovejj232011-07-05 18:10
问个问题如果我输入ihj或者hij什么的是不是那些没j的就不在搜索结果下出现呢
#3
tsyking2011-07-10 13:20
程序代码:
#include<iostream>
#include <vector>
using namespace std;

// 代码比较重复,目前只支持二个字符查询,但三个条件基本上还是能满足!

int main(){

   
    char a[]="Hubei";
    char b[]="Heilongjiang";
    char c[]="Hebei";
    char d[]="Shanxi";
    char e[]="Shaanxi";
    int num = 0;   //标记是否含有c1[0]
   
    char c1[2];

    while (1) {
        cout<<"输入你要查询的词:";
        cin>>c1;
      
        for( int i=0;i<sizeof(a);i++){
            if (a[i]==c1[0]||a[i]-c1[0]==-32||a[i]-c1[0]==32) { //判断第一个字符,过滤大小写
               
                num = 1;
               
            }
            if (a[i]==c1[1]&&num==1||a[i]-c1[0]==-32||a[i]-c1[0]==32) { //判断第二个字符,过滤大小写
                cout<<a<<endl;
                num=0;
                break;
            }
           
      
        }
   
    for( i=0;i<sizeof(b);i++){
        if (b[i]==c1[0]||b[i]-c1[0]==-32||b[i]-c1[0]==32) {
           
            num = 1;
           
        }
        if (b[i]==c1[1]&&num==1||b[i]-c1[0]==-32||b[i]-c1[0]==32) {
            cout<<b<<endl;
            num=0;
            break;
           
    }}
    for( i=0;i<sizeof(c);i++){
        if (c[i]==c1[0]||c[i]-c1[0]==-32||c[i]-c1[0]==32) {
           
            num = 1;
           
        }
        if (c[i]==c1[1]&&num==1||c[i]-c1[0]==-32||c[i]-c1[0]==32) {
            cout<<c<<endl;
            break;
    }}
    for( i=0;i<sizeof(d);i++){
        if (d[i]==c1[0]||d[i]-c1[0]==-32||d[i]-c1[0]==32) {
           
            num = 1;
           
        }
        if (d[i]==c1[1]&&num==1||d[i]-c1[0]==-32||d[i]-c1[0]==32) {
            cout<<d<<endl;
            num=0;
            break;
    }}
    for( i=0;i<sizeof(d);i++){
        if (d[i]==c1[0]||d[i]-c1[0]==-32||d[i]-c1[0]==32) {
           
            num = 1;
           
        }
        if (d[i]==c1[1]&&num==1||d[i]-c1[0]==-32||d[i]-c1[0]==32) {
            cout<<d<<endl;
            num=0;
            break;
    }}
    for(i=0;i<sizeof(e);i++){
        if (e[i]==c1[0]||e[i]-c1[0]==-32||e[i]-c1[0]==32) {
           
            num = 1;
           
        }
        if (e[i]==c1[1]&&num==1||e[i]-c1[0]==-32||e[i]-c1[0]==32) {
            cout<<e<<endl;
            num=0;
            break;
    }}
   


    }   
      
}

1