Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
这个题目是有是有问题!指明了说每个deposit最多不超过100,我加上这个条件就错,去了反而对了,代码如下,哪位大牛能解释一下?#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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator