博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
喷水装置问题(一)
阅读量:6158 次
发布时间:2019-06-21

本文共 1537 字,大约阅读时间需要 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 
#include
#include
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[n] > zuis[m]) swap(&zuis[m],&zuis[n]);}/* 测试输出 */void print(int sum,float zuis[]){ int m; for(m = 0;m < sum;m++) printf("%.1f ",zuis[m]); printf("\n");}

运行结果:

这里写图片描述

转载于:https://www.cnblogs.com/bobo1223/p/7287521.html

你可能感兴趣的文章
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
linux后台运行程序
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>