• POJ1717-Dominoes


    【题目描述】

    多米诺骨牌是一个扁平的,有拇指的瓷砖,其面部分为两个正方形,每个正方形留空或带有一到六个点。桌子上摆着一排多米诺骨牌: 

    顶行中的点数是6 + 1 + 1 + 1 = 9,并且底线中的点数是1 + 5 + 3 + 2 = 11。顶线和底线之间的差距为2.差距是两个总和之差的绝对值。 
    每个多米诺骨牌都可以旋转180度,保持脸部始终向上。 
    最小化顶线和底线之间的间隙所需的最小匝数是多少? 
    对于上图,只需转动行中的最后一个多米诺骨牌就可以将间隙减小到0.在这种情况下,答案是1. 
    编写一个程序:计算最小化间隙之间所需的最小圈数。顶线和底线。

    【输入】

    输入的第一行包含一个整数n,1 <= n <= 1000.这是表中列出的多米诺骨牌的数量。 
    接下来的n行中的每一行包含两个整数a,b由单个空格分隔,0 <= a,b <= 6.整数a和b写在输入文件的行i + 1中,1 <= i < = 1000,分别是行顶部和底部的第i个多米诺骨牌上的点数。

    【输出】

    输出所需的最小匝数,以最小化顶线和底线之间的间隙。

    【输入示例】

    4

    6 1

    1 5

    1 3

    1 2
    【输出示例】
    1

    【思路】

    动态规划

    方程为

    f[i][j]=min(f[i-1][j-ans],f[i-1][j+ans]+1);

    绝对值相同,看次数

        for(i=0;i<=6000;i++)
        {
            ans=min(f[n][i+6000],f[n][6000-i]);
            if(ans<=1000)
            {
                cout<<ans;
                return 0;
            }
        }

    【代码】

    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int f[1005][12005];
    int main()
    {
        int u[100000],d[100000];
        int i,j;
        int n;
        cin>>n;
        for(i=1;i<=n;i++)
        {
            cin>>u[i];
            cin>>d[i];
        }
        memset(f,0x7f,sizeof(f));
    
        f[0][6000]=0;
        for(i=1;i<=n;i++)
        {
            for(j=0;j<=12000;j++)
            {
                int ans=u[i]-d[i];
                f[i][j]=min(f[i-1][j-ans],f[i-1][j+ans]+1);
            }
        }
        int ans=0;
        for(i=0;i<=6000;i++)
        {
            ans=min(f[n][i+6000],f[n][6000-i]);
            if(ans<=1000)
            {
                cout<<ans;
                return 0;
            }
        }
    }

     

     

     

  • 相关阅读:
    [Machine Learning]Numpy
    [LeetCode]Valid Palindrome
    [LeetCode]Remove Linked List Elements
    [LeetCode]Reverse Linked List
    [LeetCode]Palindrome Number
    Spring绑定请求参数过程以及使用@InitBinder来注册自己的属性处理器
    servlet温故知新
    线程池简单实现
    JAVA NIO学习笔记
    XSS攻击简单介绍
  • 原文地址:https://www.cnblogs.com/4D24/p/9447503.html
Copyright © 2020-2023  润新知