• 动态规划 DP


    10.1.5.253    1143    数字金字塔
    #include <iostream> #include<string.h> using namespace std; int a[1005][1005],b[1005][1005]; int n; int max(int x, int y) { return x>y?x:y ; } int f(int i,int j) { if(b[i][j]!=-1) return b[i][j]; return b[i][j]=a[i][j]+max(f(i+1,j),f(i+1,j+1)); } int main() { int i,j; while(cin>>n) { for(i=0;i<n;i++) for(j=0;j<=i;j++) cin>>a[i][j]; memset(b,-1,sizeof(b)); for(j=0;j<n;j++) b[i-1][j]=a[i-1][j]; cout<<f(0,0)<<endl; } }



    17 nyist
    //               Accept
    //记忆式搜索 #include <iostream> #include<stdio.h> #include<string.h> using namespace std; char a[10002]; int b[10002]; int n,ans; int f(int x) { int i,t; if(b[x]>0) return b[x]; b[x]=1; for(i=0;i<=x-1;i++) { t=f(i); if(a[i]<a[x] && b[x]<t+1) b[x]=t+1; } return b[x]; } int main( ) { int i,j,len; cin>>n; for(i=1;i<=n;i++) { scanf("%s",a); len=strlen(a) ; for(j=0;j<len;j++) b[j]=-1; // 设置一个不可能出现的结果 f(len-1); ans=1; for(j=0;j<len;j++) if(ans<b[j]) ans=b[j]; cout<<ans<<endl ; } }

    //  DP
    
    #include <iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    char a[10002];
    int  b[10002];
    int n,ans;
    int dp(int x)
    {
    	int i,j,max;
    	b[0]=1;
    	
    	for(i=1;i<=x;i++)
    	{max=1;
    	for(j=0;j<i;j++)
    	if(a[j]<a[i] && max<b[j]+1) max=b[j]+1;
    	b[i]=max;
    	}
    }
    
    int main( )
    {
    int i,j,len;
    cin>>n;
    for(i=1;i<=n;i++)
    {
     scanf("%s",a);
     len=strlen(a)	;
     
     dp(len-1);
     ans=1;
     for(j=0;j<len;j++)
     if(ans<b[j]) ans=b[j];
     cout<<ans<<endl ;
    }	
    	
    }
    
    
    
    ******************************************************************88
    
    #include <iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    char a[10002];
    int  b[10002];
    int n,ans;
    int dp(int x)
    {
    	int i,j,max;
    	ans=b[0]=1;
    	
    	for(i=1;i<=x;i++)
    	{max=1;
    	for(j=0;j<i;j++)
    	if(a[j]<a[i] && max<b[j]+1) max=b[j]+1;
    	b[i]=max;
    	if(b[i]>ans)  ans=b[i];
    	}
    }
    
    int main( )
    {
    int i,j,len;
    cin>>n;
    for(i=1;i<=n;i++)
    {
     scanf("%s",a);
     len=strlen(a)	;
     
     dp(len-1);
     
     cout<<ans<<endl ;
    }	
    	
    }
    

      

    poj 1088滑雪     //DP
    
     #include <iostream>
     using namespace std;
      
     int a[102][102],b[102][102];
     int r, c,ans;
     int f( int i, int j ) 
     {  int max=1,t;
     	if( b[i][j] > 1 )   return b[i][j];
        if( i + 1 <= r && a[i][j] > a[i+1][j] )
        {   t = f( i + 1, j ) + 1;
            if( max < t )   max = t;
        }
        if( j + 1 <= c && a[i][j] > a[i][j+1] )
        {   t = f( i, j + 1 ) + 1;
            if( max < t )    max = t;
        }
        if( i - 1 > 0 && a[i][j] > a[i-1][j] )
        {   t = f( i - 1, j ) + 1;
            if( max < t )   max = t;
        }
        if( j - 1 > 0 && a[i][j] > a[i][j-1] )
        {   t = f( i, j - 1 ) + 1;
            if( max < t)  max = t;
        } 
        return max;
    }
    
    int main()
    {	int i,j;
        cin >> r >> c;
        for ( i = 1; i <= r; ++i )
          for ( j = 1; j <= c; ++j )
           { cin >> a[i][j];  b[i][j] = 1; }
        ans = 1;
        for( i = 1; i <= r; ++i )
            for( j = 1; j <= c; ++j )
            {   b[i][j] = f( i, j );
                if( ans < b[i][j] ) ans = b[i][j];
            }
        cout << ans <<endl;
    }
    

      

    //2084  hdu  c++   数塔
    #include <iostream>
    #include<string.h>
    using namespace std; int a[105][105],b[105][105]; int n; int max(int x, int y) { return x>y?x:y ; } int f(int i,int j) { if(b[i][j]!=-1) return b[i][j]; return b[i][j]=a[i][j]+max(f(i+1,j),f(i+1,j+1)); } int main() { int i,j,c; cin>>c; while(c--) { cin>>n ; for(i=0;i<n;i++) for(j=0;j<=i;j++) cin>>a[i][j]; memset(b,-1,sizeof(b)); for(j=0;j<n;j++) b[i-1][j]=a[i-1][j]; cout<<f(0,0)<<endl; } }

      

    
    

      

    
    

      

  • 相关阅读:
    特征选择方法之信息增益
    6 个优秀的开源 OCR 光学字符识别工具
    Python中type与Object的区别
    Python type类具体的三大分类:metaclasses,classes,instance
    如何去除List中的重复值?
    type,isinstance判断一个变量的数据类型
    Python图形界面开发包 PyGTK
    python使用easygui写图形界面程序
    opencv-python 学习笔记2:实现目光跟随(又叫人脸跟随)
    Tomcat全攻略
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3427931.html
Copyright © 2020-2023  润新知