The die is cast - UVa 657 搜索
来源:互联网 发布:五轴编程哪个软件强 编辑:程序博客网 时间:2024/05/17 07:51
The die is cast
InterGames is a high-tech startup company that specializes in developing technology that allows users to play games over the Internet. A market analysis has alerted them to the fact that games of chance are pretty popular among their potential customers. Be it Monopoly, ludo or backgammon, most of these games involve throwing dice at some stage of the game.
Of course, it would be unreasonable if players were allowed to throw their dice and then enter the result into the computer, since cheating would be way to easy. So, instead, InterGames has decided to supply their users with a camera that takes a picture of the thrown dice, analyzes the picture and then transmits the outcome of the throw automatically.
For this they desperately need a program that, given an image containing several dice, determines the numbers of dots on the dice.
We make the following assumptions about the input images. The images contain only three dif- ferent pixel values: for the background, the dice and the dots on the dice. We consider two pixels connected if they share an edge - meeting at a corner is not enough. In the figure, pixels A and B are connected, but B and C are not.
A set S of pixels is connected if for every pair (a,b) of pixels in S, there is a sequence in Ssuch that a = a1 and b = ak , and ai and ai+1 are connected for .
We consider all maximally connected sets consisting solely of non-background pixels to be dice. `Maximally connected' means that you cannot add any other non-background pixels to the set without making it dis-connected. Likewise we consider every maximal connected set of dot pixels to form a dot.
Input
The input consists of pictures of several dice throws. Each picture description starts with a line containing two numbers w and h, the width and height of the picture, respectively. These values satisfy .The following h lines contain w characters each. The characters can be: ``.'' for a background pixel, ``*'' for a pixel of a die, and ``X'' for a pixel of a die's dot.
Dice may have different sizes and not be entirely square due to optical distortion. The picture will contain at least one die, and the numbers of dots per die is between 1 and 6, inclusive.
The input is terminated by a picture starting with w = h = 0, which should not be processed.
Output
For each throw of dice, first output its number. Then output the number of dots on the dice in the picture, sorted in increasing order.Print a blank line after each test case.
Sample Input
30 15...........................................................................*.................*****......****...............*X***.....**X***..............*****....***X**...............***X*.....****................*****.......*....................................................***........******............**X****.....*X**X*...........*******......******..........****X**.......*X**X*.............***........******...................................0 0
Sample Output
Throw 11 2 2 4
题意:找出每个骰子上有几个点,按大小输出。
思路:两次DFS。
AC代码如下:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m,num[4][2]={-1,0, 0,1, 1,0, 0,-1},ans[1010],len,ret;char s[60][60];void dfs2(int x,int y){ int i,j,k; if(x<=0 || y<=0 || x>n || y>m) return; if(s[x][y]=='X') { s[x][y]='*'; for(k=0;k<=3;k++) dfs2(x+num[k][0],y+num[k][1]); }}void dfs1(int x,int y){ int i,j,k; if(x<=0 || y<=0 || x>n || y>m) return; if(s[x][y]=='X') { dfs2(x,y); ret++; } if(s[x][y]=='*') { s[x][y]='.'; for(k=0;k<=3;k++) dfs1(x+num[k][0],y+num[k][1]); }}int main(){ int t=0,i,j,k; while(~scanf("%d%d",&m,&n) && n+m) { for(i=1;i<=n;i++) scanf("%s",s[i]+1); len=0; for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(s[i][j]=='*') { ret=0; dfs1(i,j); ans[++len]=ret; } printf("Throw %d\n",++t); sort(ans+1,ans+1+len); printf("%d",ans[1]); for(i=2;i<=len;i++) printf(" %d",ans[i]); printf("\n\n"); }}
- The die is cast - UVa 657 搜索
- 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(双重搜索)
- 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
- 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
- 关于row movement的一点应用
- leetcode:Swap Nodes in Pairs
- mac os x下使用命令行安装软件
- Win7中Nexus5找不到驱动
- 减肥运动
- The die is cast - UVa 657 搜索
- oracle事务处理及实例演示jdbc操作批量删除
- 《BOM物料管理》读书笔记
- C# ZedGraph画曲线图形
- 教大家怎样打理长卷发
- 可是发个看看电视剧好看公共课
- HDOJ题目1290献给杭电五十周年校庆的礼物(数学,递推)
- UVA 11300 - Spreading the Wealth
- 几行代码看程序员的水平——Android文件命名规范