poj2533--LIS

poj2533--LIS

好久没有发博了,最近看了动归和背包问题,有点看不下去,所以先从简单的题目入手。

这个是裸LIS的题目。(n²)

接下来有个复杂点的题目:poj 1836,同一个算法

#define LOCAL
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAXN 1000 + 10

int value[MAXN];
int longestSub[MAXN];

int main()
{
#ifdef LOCAL
    freopen("C:\\Users\\Administrator\\Desktop\\Temp\\ACMTempIn.txt", "r", stdin);
    //freopen("C:\\Users\\Administrator\\Desktop\\Temp\\ACMTempOut.txt", "w", stdout);
#endif
    int cases;
    int i,j,max;

    while(scanf("%d", &cases) != EOF)
    {
        memset(longestSub, 0, sizeof(longestSub));
        memset(value, 0, sizeof(value));
        for(i = 0; i < cases; i++)
        {
            max = 0;
            scanf("%d", &value[i]);
            longestSub[i] = 1;
            for(j = 0; j < i; j++)
            {
                if(value[j] < value[i] && max < longestSub[j])
                {
                    max = longestSub[j];
                }
                longestSub[i] = max + 1;
            }
        }

        max = 0;
        for(i = 0; i < cases; i++)
            if(max < longestSub[i])
                max =  longestSub[i];
        printf("%d\n", max);
    }
    return 0;
}





你可能感兴趣的:(c,算法)