求助,tail尾指针为2后++(90分)和为1先++(100分)的问题??
查看原帖
求助,tail尾指针为2后++(90分)和为1先++(100分)的问题??
463562
Dreamerlee✅楼主2021/1/30 12:10
#include <iostream>  
#include <cstdio>  
#include <cstring>  
using namespace std;  
void bfs();  
int n, m, x[160010], y[160010], b[410][410];  
int c[10] = { 0,2,1,2,-2,-1,-1,1,-2 }, d[10] = { 0,1,2,-1,-1,-2,2,-2,1 }; 
int main(void)  
{  
	memset(b, -1, sizeof(b));  
	cin >> n >> m >> x[1] >> y[1]; 
	b[x[1]][y[1]] = 0;  
	bfs();  
	for (int i = 1; i <= n; i++)                          
	{                          
	for (int j = 1; j <= m; j++)  
		printf("%-5d",b[i][j]);  
			cout << endl;
	}
	return 0;
}  
void bfs()  
{ 
	int head = 0, tail = 2, x1, y1;  
	while (head < tail)                       
	{                       
		++head;                       
	for (int i = 1; i <= 8; i++)  
	{
		x1 = x[head] + c[i]; 
		y1 = y[head] + d[i]; 
		if (b[x1][y1] == -1 && x1 > 0 && x1 <= n && y1 > 0 && y1 <= m)                                                                        
	{        
    //这里tail++;并在前面设tail为1就100分
b[x1][y1] = b[x[head]][y[head]] + 1;                                                                         
		x[tail] = x1;                                                                        
		y[tail] = y1;                                                                        
		++tail;//这里前面设tail=2,最后++就90分
	}
		}

	}
}
2021/1/30 12:10
加载中...