CSP-202312-1-仓库规划
解题思路
-
定义结构体和变量:
- 结构体
MyWareHouse,用来存储每个仓库的索引(编号)和位置编码。 - 定义了整数
n和m,分别代表仓库的数量和位置编码的维数。 - 定义了一个
vector<MyWareHouse>的列表wareHouseList,用来存储所有仓库的信息。
- 结构体
-
输入数据:
- 首先,程序从标准输入读取
n(仓库个数)和m(位置编码的维数)。 - 然后,程序进入一个循环,读取每个仓库的位置编码,并将仓库信息存储到
wareHouseList中。每个仓库的索引设置为其在输入序列中的位置加一(因为仓库编号从1开始)。
- 首先,程序从标准输入读取
-
寻找上级仓库:
- 对于
wareHouseList中的每一个仓库,程序尝试找到它的上级仓库。 - 程序通过两层循环来完成这个任务:外层循环遍历所有仓库(假设当前仓库为
i),内层循环也遍历所有仓库(假设当前仓库为j),以找到i的上级仓库。 - 在内层循环中,程序比较仓库
i和仓库j的位置编码的每一维。如果i的每一维都小于j的相应维度,则变量find会增加。如果find的值等于位置编码的维数m,说明仓库j的每一维都大于仓库i的对应维度,即仓库j可以成为仓库i的上级。 - 如果找到了上级仓库,则将该上级仓库的索引赋值给变量
index并退出内层循环;如果没有找到,则index保持为0。
- 对于
完整代码
#include<iostream>
#include<vector>
using namespace std;
struct MyWareHouse
{
int index;
vector<int>position;
};
int n, m;
vector<MyWareHouse>wareHouseList;
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++)
{
MyWareHouse t;
t.index = i + 1;
for (int j = 0; j < m; j++)
{
int pos;
cin >> pos;
t.position.push_back(pos);
}
wareHouseList.push_back(t);
}
for (int i = 0; i < n; i++)
{
int index = 0; // 默认没有找到,索引为0
for (int j = 0; j < n; j++)
{
int find = 0; // 每有一维大于 find++,直到 find 为 m
// 比较位置坐标
for (int k = 0; k < m; k++)
{
if (wareHouseList[i].position[k] < wareHouseList[j].position[k]) {
find++;
}
}
if (find == m)
{
index = wareHouseList[j].index;
break;
}
}
cout << index << endl;
}
return 0;
}




















