學姐思路非常清下,膜拜orz…orz
poj 1035
大致題意:
輸入一部字典,輸入若干單詞
1、 若某個單詞能在字典中找到,則輸出corret
2、 若某個單詞能通過 變換 或 刪除 或 新增乙個字元後,在字典中找得到,則輸出這些單詞,輸出順序根據 輸入的那部字典的字典序
3、 若某個單詞無論操作與否都無法在字典中找得到,則輸出空
暴力吧!模擬吧!
基本思路就是逐個比較 待查單詞 與 字典單詞 的長度,當且僅當兩者長度之差的絕對值<=1時才進行檢查操作。
//memory time
//456k 157ms
#include
#include
using
namespace
std;
char dict[10001][16];
char word[51][16];
int dictnum=0; //字典計數器
int wordnum=0; //單詞計數器
void input(void);
bool change(char* word,char* dict); //檢查字串word能否通過變換得到dict
bool del(char* word,char* dict); //檢查字串word能否通過刪除得到dict
bool add(char* word,char* dict); //檢查字串word能否通過新增得到dict
int main(void)
else
if(change(word[i],dict[k]))
address[pa++]=k;
} else
if(len-dictlen[k]==1) //delete
else
if(dictlen[k]-len==1) //add
} /*output*/
if(flag)
cout
<" is correct"
return
0;
} void input(void)
bool change(char* word,char* dict) //wordlen==dictlen
} return
true;
} bool del(char* word,char* dict) //wordlen==dictlen+1
else
} return
true;
} bool add(char* word,char* dict) //wordlen==dictlen-1
else
} return
true;
} 2014.9
.27自己又打了一遍**,有一處需要注意,即輸入處理
#include
#include
#define n 10000+10
#include
using
namespace
std;
int dictlen[n];
char dict[n][17],word[51][17];
bool change(char *word,char *dict)
}return
true;
}bool del(char *word,char *dict)
else
}return
true;
}bool add(char *word,char *dict)
else
}return
true;
}int main()
else
if(change(word[i],dict[j]))
address[pa++]=j;
}if(len-dictlen[j]==1)
if(dictlen[j]-len==1)
}if(flag)
printf("%s is correct\n",word[i]);
else
puts("");
}delete address;
}}
字串暴力匹配演算法
暴力匹配演算法 如果用暴力匹配的思路,並假設現在 str1 匹配到 i位置,子串 str2 匹配到 j 位置,則有 1 如果當前字元匹配成功 即 str1 i str2 j 則i j 繼續匹配下乙個字元 2 如果失配 即 str1 i str2 j 令i i j 1 j 0 相當於每次匹配失敗時,i...
字串匹配暴力演算法
include define maxsize 100 typedef struct sqstring void strassign sqstring s,char cstr 初始化串 s.length i void destroystr sqstring s 釋放串 void strcopy sqs...
字串查詢 1 暴力字串查詢演算法
virtual int findstr const string haystack,const string needle override if j patsize return i return 1 最差情況下,haystack可能是 aaa.aaa needle是 a.ab 在這種情況下,需要...