标题:等差数列的子序列个数, 求指导算法
取消只看楼主
东南风
Rank: 1
等 级:新手上路
威 望:1
帖 子:19
专家分:5
注 册:2016-9-2
结帖率:100%
已结贴  问题点数:20 回复次数:2 
等差数列的子序列个数, 求指导算法
自已写了一个,不知对不对. 用较小的数列测试是正确的.
程序代码:
#include <stdio.h>
int adj(int *,int);
void print(int ,int ,int ,int *);
int main(void)
{
    int ar[]={2, 4, 6, 8, 10, 12}; 
    int len=sizeof(ar)/sizeof(ar[0]);
    printf("子序列数 = %d", adj(ar,len));
}
int adj(int *ar,int len)
{   
    int n=0;
    for (int i=2;i<len;i++)
        for (int j=0;j<=i-2;j++)
            for (int d=1;d<=(i-j)/2;d++)                
                if ((i-j) % d == 0){    
                    ++n;
                    print(i,j,d,ar);
                } 
    return n;                  
}
void print(int i,int j,int d,int *ar)
{
    for (;j<=i;j+=d)
        printf("%d ", ar[j]);
    putchar('\n');
}
搜索更多相关主题的帖子: for 子序列 数列 int print 
2021-06-06 21:13
东南风
Rank: 1
等 级:新手上路
威 望:1
帖 子:19
专家分:5
注 册:2016-9-2
得分:0 
回复 2楼 纯蓝之刃
谢谢, 老师指点. 您代码中语句: diff=ar[k+1]-ar[k] 意味着只能找到公差为两相邻元素之差的子序列. 比如例子中还有"2 6 10"和"4 8 12"没有找到. 对大师代码还没有完全看懂, 请大师再核实一下代码.
2021-06-07 10:28
东南风
Rank: 1
等 级:新手上路
威 望:1
帖 子:19
专家分:5
注 册:2016-9-2
得分:0 
回复 4楼 rjsp
一个人在VBA论坛上问的, 是力扣上的一个题目:https://
2021-06-07 11:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505958-1-1.html




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

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