怎样求一串数字中的最大子递增序列的个数 如1.2. 3.4.5.6.7.8.9,答案返回9

kojie_chen 2007-11-01 04:44:18
求一串数字中的最大子递增序列的个数 如1.2. 3.4.5.6.7.8.9,答案返回9
...全文
340 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
isarc 2007-11-06
  • 打赏
  • 举报
回复
知道为什么了,感谢。


system( "pause ");我在vc6.0中编译怎么说是错误,并且,我想说的意思是先输入一个n,代表输入n个整数,
然后输入n整数,以空格隔开,然后输出结果;
双循环能做吗?

自己要动脑想一想。
有单循环为啥要双循环?
system( "pause ");是暂停等待任意键的意思。
kojie_chen 2007-11-06
  • 打赏
  • 举报
回复
system( "pause ");在哪个函数库中?
叶落无心 2007-11-04
  • 打赏
  • 举报
回复
int a[] = {1,2,3];
sizeof(a) = count * sizeof(int),

void func( int a[] ) = void func( int * a )
{
sizeof( a ) = sizeof(int*);
}
youngshuaishuai 2007-11-04
  • 打赏
  • 举报
回复
int cnt = sizeof(a);为什么这里等于4,谁能告诉我
a这里是个指针,sizeof(a)是4个字节。
前面的a是个数组,数组和指针不一样。

动态规划。忘了
kojie_chen 2007-11-04
  • 打赏
  • 举报
回复
12楼是什么意思,看不太懂呢
chlaws 2007-11-03
  • 打赏
  • 举报
回复
路过看看
kojie_chen 2007-11-03
  • 打赏
  • 举报
回复
例如输入7
然后输入1 7 3 5 9 4 8
输出4
而且去掉重复值,如7
1 1 1 1 1 1 1
输出1
kojie_chen 2007-11-03
  • 打赏
  • 举报
回复
system("pause");我在vc6.0中编译怎么说是错误,并且,我想说的意思是先输入一个n,代表输入n个整数,
然后输入n整数,以空格隔开,然后输出结果;
baihacker 2007-11-02
  • 打赏
  • 举报
回复

/*基本上差不多了*/
#include <stdio.h>
#include <string.h>

#define MAX 256
int main(void)
{
char s[MAX];
char stk[MAX];
char l[MAX];
int m[MAX];
int n;
int i, j, top, max, pos;

printf("please input the string:\t");
scanf("%s",s);
n = strlen(s);

l[0] = 1;
m[0] = -1;
for (i=1;i<n;i++)
{
max = 0;
pos = -1;

for (j=0;j<i;j++)
if (s[j]<=s[i]&&l[j]>max)
max = l[j], pos = j;

l[i] = max + 1;
m[i] = pos;
}

max = -1;
for (i=0;i<n;i++)
if (l[i]>max)
max=l[i],pos=i;

top = 0;
for (j=0;j<max;j++)
stk[top++] = s[pos], pos = m[pos];

printf("the max is:\t%d\n",max);

while (top--) printf("%c",stk[top]);
printf("\n");

system("pause");
return 0;
}
kojie_chen 2007-11-02
  • 打赏
  • 举报
回复
双循环能做吗?
应该是动态规划
isarc 2007-11-02
  • 打赏
  • 举报
回复
int vResult = 0;
int vTemp = 0;
应该让这两个等于1,请问为什么在主函数里面,sizeof得到正确值,而在函数里面却不正确,why?
isarc 2007-11-02
  • 打赏
  • 举报
回复
//==============================================================functions
int GetMaxSeriesNum(int a[], int len);

//==============================================================mainfunction
int _tmain(int argc, _TCHAR* argv[])
{
int a[] = {1,2,3,5,4,5,6,7,8,9,1,2,3,4,5,6,4,7,8,9,10,1,2,3,3,4};
int x = sizeof(a) / sizeof(a[0]);这里是正确的

int vResult = GetMaxSeriesNum(a, x);
cout << vResult << endl;
system("pause");
return 0;
}
//==============================================================function implement
int GetMaxSeriesNum(int a[], int len)
{
int vResult = 0;
int vTemp = 0;
int cnt = sizeof(a);为什么这里等于4,谁能告诉我。

for (int i = 0; i < len - 2; i++)
{
if (a[i + 1] > a[i])
{
vTemp++;
}
else
{
if (vTemp > vResult)
{
vResult = vTemp;
}
vTemp = 0;
}
}
return vResult + 1;
}
quentinliu 2007-11-01
  • 打赏
  • 举报
回复
我觉得应该用动态规划来写,要不然数多了就计算量会超大
ttlyfast 2007-11-01
  • 打赏
  • 举报
回复

if(*a <= *(a+1)) break;
ttlyfast 2007-11-01
  • 打赏
  • 举报
回复
num = 0;
双循环
 内循环: 
    if(*a < *(a+1)) break;
num++;
  
ttlyfast 2007-11-01
  • 打赏
  • 举报
回复
应该是36吧

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧