usaco 1.23

来源:互联网 发布:vb和易语言 编辑:程序博客网 时间:2024/06/07 06:08

1.深搜,dfs写得丑了点,但是够用了。

2.string去掉末尾字符的方法

/*ID: zhangw31PROG: namenumLANG: C++*/#include <iostream>#include <fstream>#include <string>#include <set>using namespace std;string legalname;string number;string testname;int len;set<string> dict;ifstream fin("namenum.in");ofstream fout("namenum.out");ifstream fdict("dict.txt");int counting;void test() {if (dict.count(testname) != 0) {fout << testname << endl;counting ++;}}void dfs(int i) {if (i == len) {test();return;}else if (number[i] == '2') {testname += 'A'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'B'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'C'; dfs(i + 1);testname.erase(testname.end()-1);}else if (number[i] == '3') {testname += 'D'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'E'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'F'; dfs(i + 1);testname.erase(testname.end()-1);}else if (number[i] == '4') {testname += 'G'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'H'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'I'; dfs(i + 1);testname.erase(testname.end()-1);}else if (number[i] == '5') {testname += 'J'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'K'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'L'; dfs(i + 1);testname.erase(testname.end()-1);}else if (number[i] == '6') {testname += 'M'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'N'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'O'; dfs(i + 1);testname.erase(testname.end()-1);}else if (number[i] == '7') {testname += 'P'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'R'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'S'; dfs(i + 1);testname.erase(testname.end()-1);}else if (number[i] == '8') {testname += 'T'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'U'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'V'; dfs(i + 1);testname.erase(testname.end()-1);}else if (number[i] == '9') {testname += 'W'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'X'; dfs(i + 1);testname.erase(testname.end()-1);testname += 'Y'; dfs(i + 1);testname.erase(testname.end()-1);}}int main() {while (fdict >> legalname) dict.insert(legalname);fin >> number;len = number.length();dfs(0);if (!counting) fout << "NONE" << endl;fdict.close();fin.close();fout.close();}

0 0
原创粉丝点击