• papamelon 192. 三角形


    地址 https://www.papamelon.com/problem/192

    解答
    三角形的三条边需要满足 任意两条边的和大于第三边,也就是最长的棍子的长度小于其他两根根子的和
    我们使用dfs遍历三根棍子的组合 选出最大周长。
    也可以直接三次循环 遍历三根棍子的组合,选出最大周长。
    复杂度都是O(n^3)

    // 111111.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    const int N = 150;
    int arr[N];
    int n,sum;
    int ans ;
    int sel[3];
    
    void dfs(int selCount, int start) {
    	if (selCount == 3) {
    		if (sel[0] + sel[1] > sel[2]) {
    			ans = max(ans, sel[0] + sel[1] + sel[2]);
    		}
    		return;
    	}
    	int i = start;
    	for (i = start; i < n; i++) {
    		sel[selCount] = arr[i]; selCount++;
    		dfs(selCount, i + 1);
    		selCount--; sel[selCount-1] = 0;
    	}
    
    }
    
    int main()
    {
    	cin >> n;
    	for (int i = 0; i < n; i++) { cin >> arr[i]; }
    	sort(arr,arr+n);
    
    	dfs(0,0);
    	cout << ans << endl;
    
    	return 0;
    }
    

    三重循环

    三角形的三条边需要满足 任意两条边的和大于第三边,也就是最长的棍子的长度小于其他两根根子的和
    首先将木棒长度排序,保证选择的第三根木棒最长,这样比较第一根加上第二根大于第三根木棒的长度即可
    排序时间复杂度是 O(nlogn) 三重循环查找是 O(n^3)

    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    const int N = 150;
    int arr[N];
    int n,sum;
    int ans ;
    
    int main()
    {
    	cin >> n;
    	for (int i = 0; i < n; i++) { cin >> arr[i]; }
    	sort(arr,arr+n);
    
    	int i, j,k;
    	for (i = 0; i < n; i++) {
    		for (int j = i + 1; j < n; j++) {
    			for (int k = j + 1; k < n; k++) {
    				if (arr[i] + arr[j] > arr[k]) {
    					ans = max(ans, arr[i] + arr[j] + arr[k]);
    				}
    			}
    		}
    	}
    
    	cout << ans << endl;
    
    	return 0;
    }
    

    我的视频题解空间

  • 相关阅读:
    博客园安卓客户端合仔茶版本V4.0震撼发布
    提示功能的检索框
    .net 玩自动化浏览器
    《表单篇》DataBase之大数据量经验总结
    自定义表主键
    一次网络程序Debug过程
    关于.NET下开源及商业图像处理(PSD)组件
    利用反射从程序集dll中动态调用方法
    Linux内核源码分析方法
    wcf基础教程之 契约(合同)Contract
  • 原文地址:https://www.cnblogs.com/itdef/p/15541461.html
Copyright © 2020-2023  润新知