堆雪人
题目描述 冬天到了,开始下雪了。松神和二哥决定出去推雪人。大家都知道一个雪人由两个雪球组成。松神和二哥决定分工合作,每人分别先滚若干个雪球,然后再组合在一起。一个小时后,松神一共滚了n个雪球,每个雪球的半径分别为a1,a2,a3...,an,与此同时,二哥一共滚了m个雪球,每个雪球的半径分别为b1,b2,b3,...,bn。他们决定每人选择出一个雪球然后推成一个雪人。由于美观的原因,假设两个雪球的半径分别为r1,r2(r1<=r2),他们认为当雪人的两个雪球的半径满足3/2*r1<=r2<=2*r1时,那么这个雪人是美观的。你能告诉他们,他们是否能够组成一个美观的雪人吗? 输入 多组测试数据。 每组测试数据的第一行为两个正整数n,m(1<=n,m<=100)。 第二行为n个由空格分隔的正整数代表松神滚得雪球的半径。 第三行为m个由空格分隔的正整数代表二哥滚得雪球的半径。 所有雪球的半径均不大于100。 输出 对于每组测试数据,若松神和二哥能够组成一个美观的雪人,则输出"Yes",否则输出"No"。 样例输入 2 1 2 3 2 1 2 4 9 10 样例输出 Yes No
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; double str1[101]; double str2[101]; int main() { int n,m; double a,b; while(cin>>n>>m) { int flag=0; //用flag来记录是否能做成雪人 for(int i=0;i<n;i++) //输入两个人的雪球半径 { scanf("%lf",&str1[i]); } for(int i=0;i<m;i++) { scanf("%lf",&str2[i]); } for(int i=0;i<n;i++) //循环嵌套,将str1的第一,二,三到n-1个元素和str2的元素依次比较,把大的赋值给b,小的赋值给a { for(int j=0;j<m;j++) { if(str1[i]>str2[j]) { b=str1[i]; a=str2[j]; } else { a=str1[i]; b=str2[j]; } if(a*1.5<=b && b<=2*a) //当a<b也就是刚好满足题意撒,因为小的是头大的不是头,所以要经过一波比较才能到这个条件这来,不像比较的话也可以直接调用c++里max或者min函数 { flag=1; //满足这个条件,flag=1 =>输出yes } } } if(flag==1) { cout<<"Yes"; } else cout<<"No"; cout<<endl; } return 0; }