题目编号:A。
题意:在400个两两相对房间之间搬桌子,走廊一次只能通过一张桌子,把桌子从一个房间移到另一个房间需要10分钟。输入T表示搬桌子的组数,输入N表示每一组要搬的桌子数,接下来的N行输入桌子搬出的房间和搬入的房间。输出每一组搬桌子的最短时间。
思路形成过程:因为走廊不可以同时搬运两张桌子,可以将每两个相对的门之间的走廊设为一个参数,统计每组桌子搬完后走廊的占用次数,最大占用次数乘10即为所求时间。
感想:这里需要巧妙地将问题转化为统计走廊占用次数的的问题,而我一开始的想法是:将输入的各组数据按要到达的房间号排序(sort函数),在对排序好的数据进行遍历;每一遍找出一组可以同时搬用的桌子,直到所有的桌子被搬完,用组数乘以10即为所求时间,但最终没有实现,停在了怎么实现进行多次遍历。
代码:
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int i, j,T,S,B=0;
int move[200],max[200];
int N;
int form, to;
cin >> T;