查找杯子和架子的整齐排列是否可以用C ++进行

概念

对于给定的三种不同类型的杯子(p [])和碟子(q []),以及m个架子,确定是否可以使杯子和架子整齐地布置。

现在,如果遵循以下规则,则杯子和碟子的布置将变得整洁-

  • 根据第一条规则,任何架子都不能同时容纳杯子和碟子。

  • 根据第二条规则,每个架子上的杯子不得超过5个。

  • 根据第三条规则,每个架子上的碟子不得超过10个。

输入值

p[] = {4, 3, 7}
q[] = {5, 9, 10}
m = 11

输出结果

Yes

说明

杯子总数= 14,需要的架子= 3

碟总数= 24,所需架子= 3

因此,所需的货架总数= 3 + 3 = 6

小于给定的货架数m。因此,输出为是。

输入值

p[] = {5, 8, 5}
q[] = {4, 10, 11}
m = 3

输出结果

No

杯子总数= 18,需要的架子= 4

碟总数= 25,所需架子= 3

因此,所需的货架总数= 4 + 3 = 7

大于给定的货架数m。因此,输出为No。

方法

要安排杯子和碟子,请确定杯子总数p和碟子总数q。因为同一架子上的杯子数不能超过5个,所以通过公式(p + 5-1)/ 5确定杯子所需的最大架子数,而碟子所需的最大架子数可以通过实施公式(q + 10-1)/ 10。已经看到,如果这两个值的总和等于或小于m,则该布置是可能的,否则是不可能的。

示例

// C++ code to find if neat
//杯子和
//架子可以做成
#include<bits/stdc++.h>
using namespace std;
//显示功能检查排列
void canArrange1(int p[], int q[], int m){
   int sump = 0, sumq = 0;
   //用于计算总数
   //杯子
   for(int i = 0; i < 3; i++)
      sump += p[i];
   //用于计算总数
   //碟
   for(int i = 0; i < 3; i++)
      sumq += q[i];
   //现在添加5和10,如果
   //总和小于5并且
   //10,那么我们可以得到1作为
   //回答而不是0-
   int mp = (sump + 5 - 1) / 5;
   int mq = (sumq + 10 - 1) / 10;
   if(mp + mq <= m)
      cout << "Yes";
   else
      cout << "No";
}
//驱动程式码
int main(){
   // Shows number杯子 of each type
   int p[] = {4, 3, 7};
   // Shows number碟 of each type
   int q[] = {5, 9, 10};
   //显示货架数
   int m = 10;
   //表示调用函数
   canArrange1(p, q, m);
   return 0;
}

输出结果

Yes
猜你喜欢