对于给定的三种不同类型的杯子(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