I - 9 HDU - 1576
#include <iostream>
using namespace std;
int main()
{
long long x, B, n,T;
cin >> T;
int *q = nullptr;
q = new int[T];
for (int i = 0; i < T; ++i)
{
cin >> n >> B;
for (int t =1; t < 9973; ++t)
{
if ((((B % 9973)*t) % 9973 - n) % 9973 == 0)
{
q[i] = t;
break;
}
}
}
for (int i = 0; i < T; ++i)
{
cout << q[i]<<endl;
}
}
H - 8 POJ - 3984
走迷宫并输出路径——BFS
#include<iostream>
using namespace std;
int map[5][5];
int dir[4][2] = { {1,0}, {0,1},{0,-1},{-1,0} };
int front = 0, to = 1;
struct node {
int x, y, pre;
}q[100]; //元素数量的4倍,因为有4个方向
void print(int i) //输出路径
{
if (q[i].pre != -1)
{
print(q[i].pre);
cout << "(" << q[i].x << ", " << q[i].y << ")" << endl;
}
}
void bfs(int x1, int y1) //好模板,易理解
{
q[front].x = x1;
q[front].y = y1;
q[front].pre = -1;
while (front < to)
{
for (int i = 0; i < 4; i++) //尝试走四个方向
{
int a = dir[i][0] + q[front].x;
int b = dir[i][1] + q[front].y;
if (a < 0 || a >= 5 || b < 0 || b >= 5 || map[a][b])
continue;
else
{
map[a][b] = 1;
q[to].x = a;
q[to].y = b;
q[to].pre = front;
to++;
}
if (a == 4 && b == 4) print(front);
}
front++;
}
}
int main()
{
int i, j;
for (i = 0; i < 5; i++)
for (j = 0; j < 5; j++)
cin >> map[i][j];
cout << "(0, 0)" << endl;
bfs(0, 0);
cout << "(4, 4)" << endl;
return 0;
}