4
上代码
#include<stdio.h> #define M 100000 int n, i, j, a, b, max, map[100000][11], book[100000][11], head, tail, m, sum=0, max_t=0; typedef struct node{ int x, y; int step; }Node; Node que[1000]; int bfs(); int main() { while(scanf("%d", &n) && n) { for(i = 0; i < n; i++) { scanf("%d %d", &a, &b); map[b][a]++; if(max_t < b) { max_t = b; } } // head = tail = 1; for(i = 0; i <= 10; i++) { if(map[1][i] != 0) { que[tail].x = 1; que[tail].y = i; que[tail].step = map[1][i]; book[1][i] = 1; tail++; } } bfs(); printf("%d\n", sum); //sum += que[head].step; } return 0; } int bfs() { int next[3][2] = {{1, 0}, {1, -1}, {1, 1}};//原地 左xia 右xia int tx, ty; while(head < tail) { for(i = 0; i < 3; i++) { tx = que[head].x + next[i][0]; ty = que[head].y + next[i][1]; if(book[tx][ty] != 1 && tx <= max_t && ty>=0 && ty <= 10 && tx >= 1) { que[tail].x = tx; que[tail].y = ty; que[tail].step = que[head].step + map[tx][ty]; book[tx][ty] = 1; tail++; } } head++; //printf(" %d %d %d\n" ,que[head].x,que[head].y, que[head].step); } for(i = tail; i >= 0 ; i-- ) { if(que[i].step > sum) { sum = que[i].step; } } }
