首页 > 其他分享 >七边形最小分割弦

七边形最小分割弦

时间:2024-10-24 21:52:23浏览次数:3  
标签:分割 return 最小 else 七边 xy 26 math dp

import math,sys
xy,dp=((0,10),(0,20),(8,26),(15,26),(27,21),(22,12),(10,0),),{}
def C(i,j):
    if dp.get((i,j),None):return dp[(i,j)]
    if 3>=j:#C(i,j)=0
        dp[(i,j)] = 0
    else:
        dp[(i,j)] = sys.maxsize
        for k in range(i+1, i+j-1):
            dp[(i,j)] = min(C(i,k-i+1)+C(k,i+j-k)+D(i,k)+D(k,i+j-1),dp[(i,j)])
    return dp[(i,j)]
def D(i,j):#i,j相邻时D(i,j)=0
    return 0 if i+1==j else math.sqrt((xy[i][0]-xy[j][0])**2+(xy[i][1]-xy[j][1])**2)

C(0,7)
75.43073157009471
在这里插入图片描述

标签:分割,return,最小,else,七边,xy,26,math,dp
From: https://blog.csdn.net/denghai_csdn/article/details/143210672

相关文章

  • 使用分水岭算法实现分割图像
    #导包:cv2视觉、numpy数组importcv2importnumpyasnp#加载图片img=cv2.imread('mourse.jpg')cv2.imshow('ori',img)#转换图片为黑白色gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将图片阈值分割ret,thresh=cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)......
  • 最小生成树
    最小生成树:能够连接所有点的最小边权之和,但是任意两点之间的距离不一定最短(与最短路区别)Prim算法:算法思路大致和dijkstra算法一致,只是dist不是距离源点的距离了,而是距离集合的距离(单独的一条边权)kruskal算法:先对边进行排序,利用并查集判断是否所有边都加进来了,由于已经排好序了,加......
  • 力扣 简单 111.二叉树的最小深度
    文章目录题目介绍题解题目介绍题解最小深度:从根节点到最近叶子结点的最短路径上节点数量。分三种情况讨论即可:当前节点为空,则返回当前节点minDepth=0;当前节点左右子树都存在,则返回当前节点minDepth=左右子树最小深度的最小值+1;当前节点的左右子树其中一个不存......
  • [数据结构] 删除单链表中最小值结点(C语言版本)
    如果对单链表基本操作或概念不理解的可以跳转:单链表的基本操作(C语言版)-CSDN博客https://blog.csdn.net/m0_74181956/article/details/143082621?spm=1001.2014.3001.5501算法思想:如图所示:定义指针p为L的第一个结点,pre为L的头结点,min为记录每次遍历的最小值结点,minpre为记......
  • C语言经典20例(输入数组元素,求出最大值和最小值,并输出)
    在c语言中,要实现要实现“输入数组元素,并求出最大值和最小值,并输出”主要步骤主要有以下几步:1.必要的头文件。2.定义数组大小。3.从用户那里接受数组元素的输入4.使用循环遍历数组。找出最大值和最小值5.输出最大值和最小值代码如下:#include<stdio.h>intmain(){......
  • DictProxy和dict的内存大小_python_如何最小的保存dict_20241023
    缘由:在写多进程的时候,进程之间要用到共享变量,Manager,于是发现了一种新的数据类型:multiprocessing.managers.DictProxy简单来说,这种数据类型特点是,只读模式,内存占用的更少,平均减少了四分之一,最高测试可以减少到1/20,配合pickle.dumps来使用,那么存到本地的文件原本可能是......
  • 代码随想录算法训练营day22和day23 | 77. 组合 216.组合总和III 17.电话号码的字母
    学习资料:https://programmercarl.com/回溯算法理论基础.html回溯法backtracking:for循环控制递归数量,暴力搜索:组合、切割、子集、排列、棋盘今天学了组合和切割可以画个N叉树的图来帮助理解回溯过程组合又包括1.单个数组(要加startIndex参数)或多个数组;2.数组内有无重复元素;3.数......
  • ReactOS寻找病返回最小StartingAddress所在结点。
    ReactOS寻找病返回最小StartingAddress所在结点。MmIterateFirstNode()函数文章目录ReactOS寻找病返回最小StartingAddress所在结点。MmIterateFirstNodeMmIterateFirstNode/*INCLUDES*****************************************************************/#incl......
  • 奇偶序号分割单链表(C语言)
    算法思想:要想将单链表L按照奇偶序号分割为两个单链表A(奇),B(偶),我们便可以定义一个变量来记录当前遍历的结点序号的奇偶,两个指针ra,rb,ra负责将奇数位置结点赋到A中,rb同理核心代码:voiddevide(LinkListL,LinkListA,LinkListB){intindex=1;LNode*p=L->next;......
  • Boruvka求最小生成树(菠萝算法)
    更新日志前言据说Boruvka算法是最古早的最短路算法,多半是真的。为什么叫菠萝算法?不知道。多半是音译吧。思路这个算法需要执行多轮,直到生成最小生成树。在每一轮中,对于每一个点(或者说,连通块),都找出以它为一个端点(或者说,一个端点在这个连通块中)的最短的边,并且将这条边加入......