等差数列的子序列个数, 求指导算法
自已写了一个,不知对不对. 用较小的数列测试是正确的.程序代码:
#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'); }