喷水装置问题(一)
2015-09-12 16:35
295 查看
描述:
现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0,15)的圆被湿润,这有充足的喷水装置i(1,600)个,并且 一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润.
输入:
第一行m表示有m组测试数据
每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有n个实数ri,ri表示该喷水装置能覆盖的圆的半径。
输出:
输出所用装置的个数
样例输入:
2
5
2 3.2 4 4.5 6
10
1 2 3 1 2 1.2 3 1.1 1 2
样例输出:
2
5
代码实现:
运行结果:
现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0,15)的圆被湿润,这有充足的喷水装置i(1,600)个,并且 一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润.
输入:
第一行m表示有m组测试数据
每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有n个实数ri,ri表示该喷水装置能覆盖的圆的半径。
输出:
输出所用装置的个数
样例输入:
2
5
2 3.2 4 4.5 6
10
1 2 3 1 2 1.2 3 1.1 1 2
样例输出:
2
5
代码实现:
/* * main.c * * Created on: 2015年9月12日 * Author: bobo */ #include <stdio.h> #include <stdlib.h> #include <math.h> void sort(int sum,float zuis[]); void print(int sum,float zuis[]); int main() { /* 样例的组数 */ int size; scanf("%d",&size); while(size--){ int count; //喷嘴的个数 scanf("%d",&count); double length = 0; //总长度 int i; float zuis[count]; for(i = 0;i < count;i++) scanf("%f",&zuis[i]); sort(count,zuis); for(i = 0; i < count;i++){ float temp = 2 * sqrt(zuis[i] * zuis[i] - 1);//计算横切的草坪的长度 length += temp; //计算总长度 if(length > 20)//如果大于20,说明以及遍布了 break; } printf("%d\n",i+1); } return 0; } /* 交换两个数字 */ void swap(float *a,float *b) { float temp = *a; *a = *b; *b = temp; } /* 最简单的排序 */ void sort(int sum,float zuis[]) { int m,n; for(m = 0;m < sum-1;m++) for(n = m+1;n < sum;n++) if(zuis > zuis[m]) swap(&zuis[m],&zuis ); } /* 测试输出 */ void print(int sum,float zuis[]) { int m; for(m = 0;m < sum;m++) printf("%.1f ",zuis[m]); printf("\n"); }
运行结果:
相关文章推荐
- 使用spring @Scheduled注解执行定时任务
- 一些遇到的有趣的程序题
- 第01章 导言(Introduction)
- C++虚析构函数、纯虚析构函数
- Eclipse的PHP插件PHPEclipse安装和使用
- 鼠标右键点击文件夹 用Unity5打开 项目 实现
- 字符集
- 做自己的软件的Gallery(一)
- 做自己的软件的Gallery(一)
- 一个简单的生成静态文件的例子
- Python中的AttributeError错误的常见原因
- 使用xml来显示获取的mysql数据
- “TI门外汉”网路知识笔记一 OSI参考模型
- 让网页背景图片 固定,不随缩小放大而变化
- rmvb 文件格式解析
- GWXZ摸底考模拟赛
- hdoj1097
- Python安装
- javascript 判断一个点是否在多边形内(向量的使用)
- Android下ListView的学习