缘由C语言 dfs算法 十四届蓝桥杯 D飞机降落问题_编程语言-CSDN问答


cpp
void 飞机降落()
{
int fj[11][4]{}, n = 0, m = 0, x = 0, j = 0;
std::cin >> n >> m;
//7 3 0 100 10 10 10 10 0 2 20 3 0 10 20 10 10 20 20 10 20 3 0 10 20 10 10 20 20 20 20 3 0 10 20 10 20 20 20 10 20 3 0 10 20 10 10 20 20 5 20 3 0 10 20 10 20 20 20 5 20 3 0 10 20 20 10 20 20 10 20
sr:if (n)
{
if (x < m)
{
std::cin >> fj[x][0] >> fj[x][1] >> fj[x][2];
++x;
}
else
{
x = 0; j = m - 1;
px:if (j)
{
if (fj[x][0] + fj[x][1] > fj[j][0] + fj[j][1] || (fj[x][0] + fj[x][1] == fj[j][0] + fj[j][1] && fj[x][0] > fj[j][0]))
std::copy(fj[j], fj[j] + 4, fj[10]), std::copy(fj[x], fj[x] + 4, fj[j]), std::copy(fj[10], fj[10] + 4, fj[x]);
if (++x == j)
x = 0, --j;
goto px;
}
jc:if (++x < m)
{
if (fj[x][0] + fj[x][1] >= fj[x - 1][2] + j)
j += fj[x - 1][2];
else
j = 0;
goto jc;
}
std::cout << (j ? "Yes\n" : "No\n");
x = 0, --n;
if (n)std::cin >> m;
}
goto sr;
}
}