UVA 487 - Boggle Blitz
2013-03-24 11:11
204 查看
回溯就可以了
#include <iostream> #include <algorithm> #include <memory.h> #include <cstdio> #include <vector> #include <string> using namespace std; const int MAX=21; char table[MAX][MAX]; int n; int di[]={-1,1,0,0,-1,-1,1,1}; int dj[]={0,0,-1,1,-1,1,-1,1}; vector<string>ans; bool cmp(const string &cs1,const string &cs2){ if(cs1.size()<cs2.size())return true; else if(cs1.size()==cs2.size()&&cs1<cs2)return true; return false; } string stak; void backtracking(int curi,int curj){ if(stak.size()>=3){ ans.push_back(stak); } for (int i=0;i<8;++i) { int ni=curi+di[i],nj=curj+dj[i]; if(ni>=0&&ni<n&&nj>=0&&nj<n&&table[ni][nj]>table[curi][curj]){ stak.push_back(table[ni][nj]); backtracking(ni,nj); stak.erase(stak.end()-1); } } } int main(){ int t; scanf("%d",&t); while (t--) { scanf("%d\n",&n); ans.clear(); for (int i=0;i<n;++i)gets(table[i]); for (int i=0;i<n;i++) { for (int j=0;j<n;++j) { stak.push_back(table[i][j]); backtracking(i,j); stak.erase(stak.end()-1); } } sort(ans.begin(),ans.end(),cmp); ans.erase(unique(ans.begin(),ans.end()),ans.end()); for (int i=0;i<ans.size();++i)printf("%s\n",ans[i].c_str()); if(t)printf("\n"); } return 0; }
相关文章推荐
- uva 755 487--3279
- UVa 755 487-3279
- UVA - 755 487--3279
- uva 755 (487--3279)排序
- uva 755 - 487--3279
- UVA 755 487-3279
- UVa 755 - 487--3279
- UVa:755 - 487--3279
- Uva 755 - 487--3279
- Uva-755-487--3279
- UVa 755 - 487--3279
- uva 755 - 487--3279
- UVa_OJ 755 487-3279
- uva 755 poj 1002 487-3279
- UVa: 755 - 487--3279
- UVa 755 / POJ 1002 - 487-3279
- UVA - 755 487--3279 sort的使用
- uva 755 - 487--3279
- UVA 755 - 487--3279
- UVa 755 - 487--3279