zoukankan      html  css  js  c++  java
  • poj1404

    动态规划

    注意多解的情况

    View Code
    #include <iostream>
    #include
    <cstdlib>
    #include
    <cstring>
    #include
    <cstdio>
    using namespace std;

    #define maxn 100

    long long value[maxn];
    char key[maxn], letter[maxn];
    long long f[maxn][maxn];
    int from[maxn][maxn];
    int l, k;
    int num[maxn];
    long long sum[maxn];

    void input()
    {
    scanf(
    "%d%d", &k, &l);
    scanf(
    "%s", key + 1);
    scanf(
    "%s", letter + 1);
    for (int i = 1; i <= l; i++)
    scanf(
    "%lld", &value[i]);
    }

    void work()
    {
    memset(from,
    0, sizeof(from));
    memset(f,
    0, sizeof(f));
    sum[
    0] = 0;
    long long temp;
    for (int i = 1; i <= l; i++)
    sum[i]
    = sum[i - 1] + value[i];
    for (int i = 1; i <= l; i++)
    {
    f[
    0][i] = 1;
    f[
    0][i] <<= 60;
    }
    for (int i = 1; i <= k; i++)
    {
    for (int j = i; j <= l; j++)
    {
    temp
    = 0;
    f[i][j]
    = 1;
    f[i][j]
    <<= 60;
    for (int m = j - 1; m >= i - 1; m--)
    {
    temp
    += sum[j] - sum[m];
    if (f[i][j] >= f[i - 1][m] + temp)
    {
    f[i][j]
    = f[i - 1][m] + temp;
    from[i][j]
    = m;
    }
    }
    }
    }
    }

    void print()
    {
    int j = l;
    for (int i = k; i > 0; i--)
    {
    num[i]
    = j - from[i][j];
    j
    = from[i][j];
    }
    num[
    0] = 0;
    for (int i = 1; i <= k; i++)
    num[i]
    = num[i] + num[i - 1];
    j
    = 1;
    for (int i = 1; i <= k; i++)
    {
    putchar(key[i]);
    putchar(
    ':');
    putchar(
    ' ');
    while (j <= num[i])
    {
    putchar(letter[j]);
    j
    ++;
    }
    putchar(
    '\n');
    }
    putchar(
    '\n');
    }

    int main()
    {
    //freopen("t.txt", "r", stdin);
    int t;
    scanf(
    "%d", &t);
    for (int i = 0; i < t; i++)
    {
    printf(
    "Keypad #%d:\n", i + 1);
    input();
    work();
    print();
    }
    return 0;
    }

      

  • 相关阅读:
    HDFS文件操作(基本文件命令)
    <a> 标签
    css text-overflow
    zepto.js 打包自定义模块
    CSS3 box-sizing
    CSS3 Filter
    JQ 导出 Excel
    outline css2
    iphone 操作手势种类
    动手写一个简单的Web框架(模板渲染)
  • 原文地址:https://www.cnblogs.com/rainydays/p/2161248.html
Copyright © 2011-2022 走看看