在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。所以,输出为 Yes。
输入
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
// arrangement of cups and
// shelves can be made
#include<bits/stdc++.h>
using namespace std;
// Shows function to check arrangement
void canArrange1(int p[], int q[], int m){
int sump = 0, sumq = 0;
// Used to calculate total number
// of cups
for(int i = 0; i < 3; i++)
sump += p[i];
// Used to calculate total number
// of saucers
for(int i = 0; i < 3; i++)
sumq += q[i];
// Now adding 5 and 10 so that if the
// total sum is smaller than 5 and
// 10 then we can get 1 as the
// answer and not 0
int mp = (sump + 5 - 1) / 5;
int mq = (sumq + 10 - 1) / 10;
if(mp + mq <= m)
cout << "Yes";
else
cout << "No";
}
// Driver code
int main(){
// Shows number of cups of each type
int p[] = {4, 3, 7};
// Shows number of saucers of each type
int q[] = {5, 9, 10};
// Shows number of shelves
int m = 10;
// ndicates calling function
canArrange1(p, q, m);
return 0;
}输出
Yes
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP