数组中n个相邻数累加算法
【求助】数组中n个相邻数累加算法
数组中n个相邻数累加算法,比如1,2,3,4,5,6
相邻的两个数1+2,2+3,3+4,。。。
相邻的三个数1+2+3,2+3+4,3+4+5,。。。
相邻的四个数1+2+3+4,2+3+4+5,。。。
。。。
相邻的n个数1+2+3+4+5+6
求助此算法,谢谢!
------解决思路----------------------
------解决思路----------------------
我也来凑热闹,除了while循环加了个printf方便看到运算过程和结果。
输出结果:
1 - 2 + 3 - 4 + 5 = 3
数组中n个相邻数累加算法,比如1,2,3,4,5,6
相邻的两个数1+2,2+3,3+4,。。。
相邻的三个数1+2+3,2+3+4,3+4+5,。。。
相邻的四个数1+2+3+4,2+3+4+5,。。。
。。。
相邻的n个数1+2+3+4+5+6
求助此算法,谢谢!
------解决思路----------------------
#include <stdio.h>
int main() {
const int n=6;
int d[n]={1,2,3,4,5,6};
int L,F,sum,i;
for (L=2;L<=n;L++) {
printf("----%d----\n",L);
for (F=0;F<=n-L;F++) {
sum=d[F];printf("%d",d[F]);
for (i=F+1;i<F+L;i++) {
sum+=d[i];
printf("+%d",d[i]);
}
printf("=%d\n",sum);
}
}
return 0;
}
//----2----
//1+2=3
//2+3=5
//3+4=7
//4+5=9
//5+6=11
//----3----
//1+2+3=6
//2+3+4=9
//3+4+5=12
//4+5+6=15
//----4----
//1+2+3+4=10
//2+3+4+5=14
//3+4+5+6=18
//----5----
//1+2+3+4+5=15
//2+3+4+5+6=20
//----6----
//1+2+3+4+5+6=21
//
------解决思路----------------------
我也来凑热闹,除了while循环加了个printf方便看到运算过程和结果。
void formatInfo(int n, char* pInfo)
{
if(NULL == pInfo) return;
char cFactor = (n%2 == 1 ? '+':'-');
if(n > 1)
{
sprintf(pInfo+strlen(pInfo), " %c ", cFactor);
}
sprintf(pInfo+strlen(pInfo), "%d", n);
}
int sum(int nEnd, char* pInfo)
{
int s = 0;
int n = 1;
while( n <= nEnd )
{
int factor = ( 1 == n%2 ? 1 : (-1) );
s += n*factor;
formatInfo(n, pInfo);
n++;
}
sprintf(pInfo+strlen(pInfo), " = %d", s);
return s;
}
int _tmain(int argc, _TCHAR* argv[])
{
char info[1000];
memset(info, 0, sizeof(info));
int s = sum(5, info);
printf("%s\r\n", info);
}
输出结果:
1 - 2 + 3 - 4 + 5 = 3