【CSP试题回顾】202312-1-仓库规划

CSP-202312-1-仓库规划

解题思路

  1. 定义结构体和变量

    • 结构体 MyWareHouse,用来存储每个仓库的索引(编号)和位置编码。
    • 定义了整数 nm,分别代表仓库的数量和位置编码的维数。
    • 定义了一个 vector<MyWareHouse> 的列表 wareHouseList,用来存储所有仓库的信息。
  2. 输入数据

    • 首先,程序从标准输入读取 n(仓库个数)和 m(位置编码的维数)。
    • 然后,程序进入一个循环,读取每个仓库的位置编码,并将仓库信息存储到 wareHouseList 中。每个仓库的索引设置为其在输入序列中的位置加一(因为仓库编号从1开始)。
  3. 寻找上级仓库

    • 对于 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; 
}

请添加图片描述

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值