• 2021.6.19 开心赛


    题外话:今天考了一天的文化课,晚上到机房又要被开心赛鞭挞。嘤嘤嘤~

    1.方格取数

    这题已经老生常谈了,不再多说。建议做完之后做传纸条,一份题解,双份快乐。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n;
     4 int a[105][105];
     5 int sum[105][105][105][105]={};
     6 
     7 int main()
     8 {
     9     int x,y,z;
    10     scanf("%d",&n);
    11     scanf("%d %d %d",&x,&y,&z);
    12     while(x&&y&&z)
    13     {    
    14         a[x][y]=z;
    15         scanf("%d %d %d",&x,&y,&z);
    16     }
    17     for(int i=1;i<=n;i++)
    18     {
    19         for(int j=1;j<=n;j++)
    20         {
    21             for(int k=1;k<=n;k++)
    22             {
    23                 for(int h=1;h<=n;h++)
    24                 {
    25                     int max1=max(sum[i-1][j][k-1][h],sum[i][j-1][k][h-1]);
    26                     int max2=max(sum[i-1][j][k][h-1],sum[i][j-1][k-1][h]);
    27                     sum[i][j][k][h]=max(max1,max2)+a[i][j];
    28                     if(i!=k&&j!=h)
    29                     {
    30                         sum[i][j][k][h]+=a[k][h];//加当前该点的 
    31                     }
    32                 }
    33             }
    34         }
    35     }
    36     printf("%d",sum[n][n][n][n]);
    37     return 0;
    38 }
    39 /*
    40 8
    41 2 3 13
    42 2 6 6 
    43 3 5 7
    44 4 4 14
    45 5 2 21 
    46 5 6 4
    47 6 3 15
    48 7 2 14
    49 0 0 0
    50 */

    2.花店橱窗布置

    这题我没看出来是区间dp.区间dp的题解我先咕一咕,今天实在不想写了。

    先放个代码吧

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int f,v;
     4 int a[1005][1005],b[1005][1005]={},c[1005][1005];
     5 int bai[10005];
     6 int k;
     7 
     8 int main()
     9 {
    10     scanf("%d %d",&f,&v);
    11     memset(b,128,sizeof(b));  
    12     for(int i=1;i<=v-f+1;i++)
    13     {
    14         b[1][i]=a[1][i];//第一行前只有第一行 
    15     }
    16     
    17     for(int i=2;i<=f;i++)//放哪朵 
    18     {
    19         for(int j=i;j<=v-f+i;j++)
    20         {
    21             for(k=i-1;k<=j-1;k++) 
    22             {
    23                 /*b[i][j]=max(b[i-1][k]+a[i][j],b[i][j]);
    24                 c[i][j]=k;*///不可以写成这个样子,if里有两句 
    25                 if (b[i-1][k]+a[i][j]>b[i][j])
    26                   {
    27                        b[i][j]=b[i-1][k]+a[i][j];            
    28                       c[i][j]=k;                      
    29                   }  
    30             }
    31         }
    32     }
    33 
    34 
    35     int max=-2100000000;
    36     for(int i=f;i<=v;i++)
    37     {
    38         if(b[f][i]>max)
    39         {
    40             max=b[f][i];
    41             k=i;
    42         }
    43     }
    44     printf("%d
    ",max);
    45     for(int i=1;i<=f;i++)
    46     {
    47         bai[i]=k;
    48         k=c[f-i+1][k];
    49     }
    50     for(int i=f;i>=2;i--)
    51     {
    52         printf("%d ",bai[i]);
    53     }
    54     printf("%d",bai[1]);
    55     return 0;
    56 }
    57 /*
    58 3 5
    59 7 23 -5 -24 16 
    60 5 21 -4 10 23 
    61 -21 5 -4 -20 20
    62 */
  • 相关阅读:
    Linux----------自动化运维工具-ansible
    Linux----------自动化运维
    Linux----------集群介绍
    Linux----------集群-LVS
    Linux----------zabbix监控-进阶
    Linux----------zabbix监控基础
    Linux----------mysql主从复制和基于GTID主从复制
    Linux----------mysql主从及高可用
    MongoDB笔记(四)基本管理命令
    MongoDB笔记(三)启动命令mongod的参数
  • 原文地址:https://www.cnblogs.com/TheZealous/p/14904668.html
Copyright © 2020-2023  润新知