| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 538 人关注过本帖
标题:最长上升子序列,哪位高手帮我看下哪里出问题了啊。。。
取消只看楼主 加入收藏
lhp3774848
Rank: 2
来 自:福建省
等 级:论坛游民
帖 子:46
专家分:77
注 册:2011-5-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
最长上升子序列,哪位高手帮我看下哪里出问题了啊。。。
#include<stdio.h>
#include<stdlib.h>
main()
{
      int i,j,k=0,s,p,a[100],n[100],m[100];
      printf("n=");
      scanf("%d",&s);
      for(i=1;i<=s;i++)
       scanf("%d",&a[i]);
      for(i=1;i<=s;i++)
      {
       printf("%d\t",a[i]);
      }
       printf("\n");
      for(i=1;i<=s-1;i++)
      {
       for(j=i+1;j<=s;j++)
       {
         if(a[j]<a[j-1])
         {
           k++;
           n[k]=i;
           m[k]=j;
           break;
         }
        }
       }
       p=m[1]-n[1]+1;
       for(i=1;i<=k;i++)
       {
        if(p<m[i]-n[i]+1)
        p=m[i]-n[i]+1;
       }
       printf("最长的上升子序列个数为:%d\n",p);
       system("pause");
}
好像多了一位
搜索更多相关主题的帖子: include 
2011-05-25 19:45
lhp3774848
Rank: 2
来 自:福建省
等 级:论坛游民
帖 子:46
专家分:77
注 册:2011-5-3
收藏
得分:0 
对了  上面的题目是: 最大上升子序列个数

给定n个整数,从左到右选若干个整数,可以构成一个上升的子序列。求最长的上升子序列的个数是多少?

2011-05-25 19:47
lhp3774848
Rank: 2
来 自:福建省
等 级:论坛游民
帖 子:46
专家分:77
注 册:2011-5-3
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
main()
{
      int i,j,k=0,s,p;
      int a[100],n[100],m[100];
      printf("n=");
      scanf("%d",&s);
      for(i=1;i<=s;i++)
       scanf("%d",&a[i]);
       a[s+1]=-20;
      for(i=1;i<=s;i++)
      {
       printf("%d\t",a[i]);
      }
       printf("\n");
      for(i=1;i<=s-1;i++)
      {
       for(j=i+1;j<=s+1;j++)
       {
         if(a[j]<a[j-1]||a[j]==-20)
         {
            k++;
            n[k]=i;
            m[k]=j-1;
            break;
         }
        }
       }
       int q;
       p=m[1]-n[1]+1;
       for(i=1;i<=k;i++)
       {
        if(p<m[i]-n[i]+1)
        {
        p=m[i]-n[i]+1;
        q=i;
        }
       }
       if(s==1)
       {
       printf("最长上升子序列个数为:1\n");
       printf("是:%d\n",a[1]);
       }
       else if(p==s)
       {
       printf("最长的上升子序列个数为:%d\n",p);
       printf("是:");
       for(i=1;i<=s;i++)
       printf("%d\t",a[i]);
       printf("\n");
       }
       else
       {
       printf("最长的上升子序列个数为:%d\n",p);
       printf("是:");
       for(i=n[q];i<=m[q];i++)
       printf("%d\t",a[i]);
       printf("\n");
       }
       system("pause");
}
想了半天这个终于可以了,呵呵。   不过4楼的那个好像不行,比如输入1 2 3 4 5 就错
2011-05-25 21:49
快速回复:最长上升子序列,哪位高手帮我看下哪里出问题了啊。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016025 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved