c语言:从一组数据中选出可以组成三角形并且周长最长的三个数(简单)

题目如下:

思路分析:

写出完整的程序:


 1 /*
2 问题描述:
3 有n根棍子,棍子i的长度为ai。想要从中选出3根棍子组成周长尽可能长的三角形。请输
4 出最大的周长,若无法组成三角形则输出0。
5 */
6
7 #include<stdio.h>
8 #include<Stdlib.h>
9 #define MAX 1000
10 int max(int a,int b){//得出两个数中最大的那个
11 if(a>b)
12 return a;
13 else
14 return b;
15 }
16 int main(){
17 int n,ans=0;//n是数字数目,ans是最后的最长答案
18 printf("输入n:");
19 scanf("%d",&n);//获取要判断的数目
20 int a[MAX];
21 printf("输入%d个数:\n",n);
22 for(int m=0;m<n;m++)
23 {
24 scanf("%d",&a[m]);//循环输入要判断的数
25 }
26 int i,j,k;
27 //让i<j<k,这样不会重复选中
28 for(i=0;i<n;i++)
29 for(j=i+1;j<n;j++)
30 for(k=j+1;k<n;k++)
31 {
32 int len=a[i]+a[j]+a[k];//周长
33 if((a[i]+a[j]>a[k])&&(a[j]+a[k]>a[i])&&(a[i]+a[k]>a[j]))
34 {
35 ans=max(len,ans); //替换答案
36 }
37 }
38 printf("最终最长的周长:%d\n",ans);
39
40 system("pause");
41 return 0;
42
43 }

时间: 2024-11-05 14:39:39

c语言:从一组数据中选出可以组成三角形并且周长最长的三个数(简单)的相关文章

一组数据中只有一个数字出现一次,其他数成对出现,找出这个数

一组数据中只有一个数字出现了一次,其他所有数字都是成对出现的,请找出这个数字. (使用位运算) 直接使用异或运算. 代码如下: #include<stdio.h> #include<stdlib.h> int main() { int arr[]={3,5,9,2,5,3,2};  int size=sizeof(arr)/sizeof(arr[0]); int i=0,find=0; for(;i<size;i++) { find^=arr[i];//循环进行异或运算 }

javascript 从一组数据中找到指定的单条数据的方法 by FungLeo

从一组数据中找到指定的单条数据的方法 在一般情况下,我们会要求后端在列表的时候输出一堆列表的JSON数据给我们,然后我们把这堆数据循环,就能在前端上显示列表了. 而我们在内容页的时候,则要求输出一个内容页的JSON数据给我们,我们就可以做内容页了. 但是,有时候,数据并不是特别复杂,我们可能需要从列表的数据中指定其中的单条数据.怎么做呢? 标准答案,find方法 var json = [{"id":1,"name":"张三"},{"id

工作 巧遇 sql 查询 一组数据中 最新的一条

SELECT * FROM rsl a, (SELECT CODE, max(time_key) time_key FROM rsl GROUP BY CODE ) b WHERE a. CODE = b. CODE AND a.time_key = b.time_key AND a. CODE IN ('HK.00700', 'HK.03888'); table :rsl 然后查询出根据每一种的code 中最新的一组数据

matlab 哪个函数可以从一组数据中随机抽取一部分出来

假设你原来的数据存在变量a中 如果,你想从a中随机抽取固定N个数c=randperm(numel(a));b=a(c(1:N));b就是从a中随机抽取的N个数(N应该小于a中元素的总个数) numel(a)获得原来a中元素的个数 c=randperm(numel(a)); 得到一个由1到numel(a))个自然数组成的随机乱序数列 加入a中有100个元素,那么运行完c=randperm(numel(a));之后 c就是一个由1到100的自然数组成的数组,但是顺序是随机打乱的 c(1:N)取c的前

一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。(使用位运算)

#include <stdio.h> int main() {      int arr[5];      int i,j;      int len=sizeof(arr)/sizeof(arr[0]);     //初始化数组      for(i=0;i<len;i++)            {        scanf("%d",&arr[i]);      }     //查找的过程      j=arr[0];     for(i=1;i<

一组数据中找出一个唯一出现过一次的数字

利用同一数字的异或为0的关系,创建了一个函数 #include<stdio.h> #include<stdlib.h> int Fac(int n, int a[10])//创建异或函数 { //相等的数字异或之后就成0了 int temp = 0;//必须先初始化0,或a[0] int i; for (i = 0; i < n; i++) { temp ^= a[i]; } return temp; } int main() { int i, n; int ret; int

一组数组中只有一个数(两个数)出现一次,其他的都成对出现,找出该数

一组数据中只有一个数字出现了一次.其他所有数字都是成对出现的.请找出这个数字.(使用位运算) >可以这么理解:如果两个数相等,它们异或之后的结果是0.而0与任何数异或都是该数本身. (比如00000001^00000001结果是0.00000000^00000001=00000001) 那么将一组数中所有元素异或,相同的数字结果是0,最后的结果就是单独出现的数字. 编程实现如下: #include <stdio.h> #include <windows.h> int main

if语句求三个数中最大的

Console.WriteLine("请输入第一个数:"); int a = Convert.ToInt32( Console.ReadLine()); Console.WriteLine("请输入第二个数:"); int b = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入第三个数:"); int c = Convert.ToInt32(Console.ReadLine(

C语言之查看数据在内存中表现形式

#include<stdio.h> void viewRAM(); void main() { viewRAM(); } //查看内存,打印内存地址 void viewRAM() { int b[5] = { 1, 2, 3, 4, 5 }; //打印内存地址 printf("%x", b); //注意:数组在内存中连续排列的 system("pause"); } 1,在打印内存地址代码后面,右键. 2,选择断点,插入断点. 3,这时断点已经生效. 4,