UVA 657 - The die is cast
2013-01-18 10:08
253 查看
这题的数据有点坑
http://acm.uva.es/board/viewtopic.php?f=7&t=1948&p=205340&hilit=657&sid=379f9c1d7545875d9ac885e9fcb2383f#p205340
这里是讨论版,上面有些刁钻的数据
用了2个函数dfs1,dfs2
dfs2对X进行拓展.
因为数据有可能是这样的:
10 2
..X**X***X
..XXXX....
X可能不被*包围着,所以对visited的用了3中值,0表示未访问,1表示已经访dfs1拓展过,2表示是dfs2拓展开来的,而未经过dfs1的拓展.
所以对着visited值为2的要重新进行dfs1一下,写的比较烂
http://acm.uva.es/board/viewtopic.php?f=7&t=1948&p=205340&hilit=657&sid=379f9c1d7545875d9ac885e9fcb2383f#p205340
这里是讨论版,上面有些刁钻的数据
用了2个函数dfs1,dfs2
dfs2对X进行拓展.
因为数据有可能是这样的:
10 2
..X**X***X
..XXXX....
X可能不被*包围着,所以对visited的用了3中值,0表示未访问,1表示已经访dfs1拓展过,2表示是dfs2拓展开来的,而未经过dfs1的拓展.
所以对着visited值为2的要重新进行dfs1一下,写的比较烂
#include <iostream> #include <vector> #include <algorithm> #include <memory.h> using namespace std; int h,w; vector<int> r; vector<int> t; char im[52][52]; char visited[52][52]; void dfs2(int i,int j){ if (im[i][j]!='X'||visited[i][j])return; visited[i][j]=2; dfs2(i-1,j); dfs2(i+1,j); dfs2(i,j-1); dfs2(i,j+1); } void dfs1(int i,int j){ if (visited[i][j]==0&&im[i][j]=='X') { t.push_back(1); dfs2(i,j); dfs1(i-1,j); dfs1(i+1,j); dfs1(i,j-1); dfs1(i,j+1); } else if(visited[i][j]==2&&im[i][j]=='X'){ visited[i][j]=1; dfs1(i-1,j); dfs1(i+1,j); dfs1(i,j-1); dfs1(i,j+1); } else if(!visited[i][j]&&im[i][j]=='*'){ visited[i][j]=1; dfs1(i-1,j); dfs1(i+1,j); dfs1(i,j-1); dfs1(i,j+1); } } int main(){ int c=1; while (1) { cin>>w>>h; if(h==0&&w==0)break; int i; memset(im,'.',sizeof(im)); memset(visited,0,sizeof(visited)); for (i=1;i<=h;++i) { for (int j=1;j<=w;++j) { cin>>im[i][j]; } } r.clear(); for (i=1;i<=h;++i) { for (int j=1;j<=w;++j) { if(im[i][j]!='.'&&!visited[i][j]){ t.clear(); dfs1(i,j); r.push_back(t.size()); } } } sort(r.begin(),r.end()); cout<<"Throw "<<c++<<endl; for (i=0;i<r.size();++i) { cout<<r[i]; if(i+1!=r.size())cout<<' '; } cout<<endl<<endl; } return 0; }
相关文章推荐
- uva 657 The die is cast
- uva 657 - The die is cast
- UVA - 657 The die is cast
- uva 657 - The die is cast
- UVA 657 The die is cast
- UVa 657 - The die is cast
- UVa657 The die is cast(DFS)
- UVA 657 The die is cast ——bfs+dfs
- UVa 657 - The die is cast
- UVa 657 The die is cast
- uva 657 The die is cast
- uva657 The die is cast(搜索)
- UVa 657 & POJ 1481 - The die is cast
- UVA 657-The die is cast(双重BFS)
- UVA 657 - The die is cast 深度搜索
- uva 657 The die is cast(DFS遍历图)
- uva 657 - The die is cast
- UVa 657 - The die is cast
- The die is cast UVA 657
- UVA 657 The die is cast