⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poly.cpp

📁 内有5个常用算法
💻 CPP
字号:
#include <stdio.h>
#include <ctype.h>
#define max 50

int minf,maxf,m[max][max][2];
char op[max];
int n;

void MinMax(int i,int j,int k)
{
    int e[4], s, 
        a=m[i][k][0], 
        b=m[i][k][1],
        r=(i+k+1)%n,
        c=m[r][j-k-1][0],
        d=m[r][j-k-1][1];
    if (op[(r-1+n)%n]=='t') 
	{
        minf=a+c;
        maxf=b+d;
    } 
	else 
	{
        e[0]=a*c;
        e[1]=a*d;
        e[2]=b*c;
        e[3]=b*d;
        minf=e[0];
        maxf=e[0];
        for(s=1;s<4;s++) 
		{
            if(minf>e[s])minf=e[s];
            if(maxf<e[s])maxf=e[s];
        }
    }
}


int PolyMax()
{
    int i,j,k,temp;
    for(j=1;j<n;j ++)
        for(i=0; i<n; i++)
            for(k=0;k<j;k++) 
			{
                MinMax(i,j,k);
                if(m[i][j][0]>minf)
					m[i][j][0]=minf;
                if(m[i][j][1]<maxf)
					m[i][j][1]=maxf;
            }
    temp=m[0][n-1][1];
    for (i=1;i<n;i++)
        if(temp<m[i][n-1][1])temp=m[i][n-1][1];

	return temp;
   
}


void main()
{
    int i;
    char ch;
	scanf("%d",&n);
    for(i=0;i<n;i++) 
	{ 
        while((ch=getchar())&& isspace(ch));
		if(i==0)
			op[n-1]=ch;
		else
			op[i-1]=ch;
		scanf("%d", &m[i][0][0]);
        m[i][0][1]=m[i][0][0];
    }
    int value=PolyMax();
	printf("最大值为:%d\n",value);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -