Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

这个题目是有是有问题!指明了说每个deposit最多不超过100,我加上这个条件就错,去了反而对了,代码如下,哪位大牛能解释一下?

Posted by fanliqian at 2009-12-16 16:09:34 on Problem 1562
#include<iostream>
using namespace std;

bool map[110][110], visit[110][110];
int n, m, ans, dir[8][2] = { {0,1}, {1, 0}, {-1, 0}, {0, -1}, {1, 1}, {-1, -1}, {-1, 1}, {1, -1}};

void dfs(int x, int y, int &num)
{
	int i,tx, ty;

	for(i = 0; i < 8; i++) {
		tx = dir[i][0] + x;
		ty = dir[i][1] + y;
		if(tx >= 0 && tx < m && ty >= 0 && ty < n && !visit[tx][ty]) {
			visit[tx][ty] = 1;
			if(map[tx][ty] ) dfs(tx, ty, ++num);
		}
	}
}

				
int main()
{
	int i, j, k;
	char ch[110];
	while(scanf("%d%d", &m, &n) != EOF) {
		if(m == 0) break;
		for(i = 0; i < m; i++) {
			scanf("%s", ch);
			for(j = 0; j < n; j++) {
				map[i][j] = (ch[j] == '@');
			}
		}
		for(i = 0; i < m; i++) {
			for(j = 0; j < n; j++) {
				if(!visit[i][j] && map[i][j]) {
					k = 1;
					dfs(i, j, k);
					//ans += (99+k)/100;
					ans++;
				}
				visit[i][j] = 1;
			}
		}
		printf("%d\n" ,ans);
		ans = 0;
		memset(visit, 0, sizeof(visit));
		memset(map, 0, sizeof(map));
	}
	return 0;
}


将上面ans++换成(99+k)/100就不对,如果一个联通中@的的个数大于100到底是用几个deposit?

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator