排座椅(贪心+排序) 您所在的位置:网站首页 座位表三人一组怎么排 排座椅(贪心+排序)

排座椅(贪心+排序)

2024-07-05 14:57| 来源: 网络整理| 查看: 265

解题思路:

想让更少的人交头接耳,就必须保证一条过道可以尽可能多的分隔开两个说话的人,所以定义一个结构体,里面包含两个成员,一个是记录某两排或者某两列之间说话的人数,一个是记录分隔开的座位号。然后进行排序,先按照人数从大到小排序,人数越多说明这条过道能把更多说话的人分开。再按照座位序号降序。

代码:

#include using namespace std; struct fun{ int num;//分隔的人数 int idex;//分隔的座椅号 }h[2010],s[2010]; int cmp(fun a,fun b) { if(a.num!=b.num) return a.num>b.num; } int cmp1(fun a,fun b) { if(a.idex!=b.idex) return a.idex>m>>n>>k>>l>>d; int x,y,p,q; int ans1=0,ans2=0; for(int i=1;i>x>>y>>p>>q; if(x==p) { s[min(y,q)].num++; s[min(y,q)].idex=min(y,q); } else if(y==q) { h[min(x,p)].num++; h[min(x,p)].idex=min(x,p); } } sort(h+1,h+m+1,cmp); sort(h+1,h+k+1,cmp1); sort(s+1,s+n+1,cmp); sort(s+1,s+l+1,cmp1); for(int i=1;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有