zoukankan      html  css  js  c++  java
  • 多边形的三角划分

    多边形的三角划分

    Description

    N个顶点的凸多边形[顶点顺序为1->N],各顶点权值已知,要求划分成N-2个三角形,使各三角形顶点权值乘积之和为最小 当n=4,各顶点的权值 分别为10,5,7,6时,所求最小 值为1056+567=510。

    Input

    第一行:一个整数n 第二行:n个整数,依次表示各顶点的权值

    Output

    一个整数表示最小的乘积之和

    Sample Input

    4
    10 5 7 6
    

    Sample Output

    510
    

    HINT

    n<=200,所有输入数据均<=1000,所求得的最小值小于10的9次方。

    Source

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    int a[201];
    long long f[201][201];
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    	memset(f,0x20,sizeof(f));
    	for(int i=1;i<=n;i++)
    	f[i][i]=f[i][i+1]=0;
    	for(int len=3;len<=n;len++)
    	     for(int i=1;i<=n;i++)
    		 {
    		 	int j=i+len-1;
    		 	if(j>n) break;
    		 	for(int k=i+1;k<=j-1;k++)
    		 	    if(f[i][j]>f[i][k]+f[k][j]+a[i]*a[j]*a[k])
    		 	    f[i][j]=f[i][k]+f[k][j]+a[i]*a[j]*a[k];
    		 } 
    		 cout<<f[1][n]<<endl;
    	return 0;
    }
    
  • 相关阅读:
    Python打包之pyinstaller
    Python关于Pyqt
    Python撰写mail
    后台管理左侧菜单
    全选反选以及取消
    模态对话框
    Spark2.3.1版本全分布模式的安装与部署
    Kafka消息格式及多版本支持
    2019-11-18-plot作图
    剑指Offer-知识迁移能力53-59
  • 原文地址:https://www.cnblogs.com/LJA001162/p/11922112.html
Copyright © 2011-2022 走看看