• poj 1191(棋盘分割)


    View Code
     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 double col[10][10],s[10][10][10][10],var[10][10][10][10][20];
     8 int main()
     9 {
    10     double n,a;
    11     double sum=0;
    12     memset(col,0,sizeof(col));
    13     memset(var,0,sizeof(var));
    14     scanf("%lf",&n);
    15     for(int i=1;i<=8;i++)
    16     for(int j=1;j<=8;j++)
    17     {
    18         scanf("%lf",&a);
    19         col[i][j]=col[i-1][j]+a;
    20         //cout<<a<<endl;
    21         sum+=a;
    22     }
    23     double avg=sum/n;
    24     //cout<<avg<<endl;
    25     //for(int i=1;i<=8;i++,cout<<endl)
    26     //for(int j=1;j<=8;j++)
    27     //{
    28        // printf("%.0lf ",col[i][j]);
    29     //}
    30     for(int i=1;i<=8;i++)
    31     for(int j=1;j<=8;j++)
    32     for(int k=i;k<=8;k++)
    33     for(int h=j;h<=8;h++)
    34     {
    35         if(h>1)
    36         s[i][j][k][h]=s[i][j][k][h-1]+col[k][h]-col[i-1][h];
    37         else s[i][j][k][h]=col[k][h]-col[i-1][h];
    38         var[i][j][k][h][1]=((s[i][j][k][h]-avg)*(s[i][j][k][h]-avg))/n;
    39         //printf("%.0lf ",s[i][j][k][h]);
    40     }
    41     //int x,y,z,p;
    42     //while(cin>>x>>y>>z>>p)
    43     //cout<<s[x][y][z][p]<<endl;
    44     for(int k=2;k<=n;k++)
    45         for(int i=1;i<=8;i++)
    46             for(int j=1;j<=8;j++)
    47                 for(int f=i;f<=8;f++)
    48                     for(int h=j;h<=8;h++)
    49                     {
    50                         double mi=9999999999;
    51                         for(int i0=i;i0<f;i0++)
    52                         {
    53                             mi=min(var[i][j][i0][h][k-1]+var[i0+1][j][f][h][1],mi);
    54                             mi=min(var[i][j][i0][h][1]+var[i0+1][j][f][h][k-1],mi);
    55                         }
    56                         for(int j0=j;j0<h;j0++)
    57                         {
    58                             mi=min(var[i][j][f][j0][k-1]+var[i][j0+1][f][h][1],mi);
    59                             mi=min(var[i][j][f][j0][1]+var[i][j0+1][f][h][k-1],mi);
    60                         }
    61                         var[i][j][f][h][k]=mi;
    62                     }
    63     printf("%.3lf\n",sqrt(var[1][1][8][8][(int)n]));
    64     return 0;
    65 }
  • 相关阅读:
    使用xorm将结构体转为sql文件
    Java反射之方法反射demo
    Java操作Redis小案例
    Java中static修饰类的问题
    static、final修饰的变量和方法能否被继承的问题
    小学生算术
    另一种阶乘问题
    整除个数
    兰州烧饼
    对决
  • 原文地址:https://www.cnblogs.com/huangriq/p/2447087.html
Copyright © 2020-2023  润新知