zoukankan      html  css  js  c++  java
  • 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;
    }
    

    我的视频题解空间

  • 相关阅读:
    c# DES加密解密
    命令行远程调用图形界面程序
    mpv0.29 vo=x11 resize窗口渲染存在不正常黑色显示
    记qt 焦点状态在多个子窗口的关系
    linux_虚拟机终端连接方法
    python_爬虫_微信公众号抓取
    python_爬虫_multiprocessing.dummy以及multiprocessing
    python_爬虫_腾讯新闻app 单页新闻数据分析爬取
    python_爬虫_Charles手机证书安装问题
    python_爬虫_Selenium_Error
  • 原文地址:https://www.cnblogs.com/itdef/p/15541461.html
Copyright © 2011-2022 走看看