题目:
下面是书上的源码,我一开始不知道返回值是什么,注释是我自己写的:
#include<stdio.h>
int find_rectangle(int len[],int n)
{
int total;
int half;
int sum;
int start;
int end;
int count;
int i;
for(total = i = 0;i < n;i++)
total += len[i];
half = total / 2;
count = start = end = 0;
sum = len[start];
while(start < n - 1)
{
if(sum < half)
sum += len[++start];
else if(sum > half)
sum -= len[end++];
else
sum += len[++start],count++;
}
return count;
}
int main()
{
int x[] = {1,3,1,1,4,1,2,1,2,2,2};
printf("%d\n",find_rectangle(x,sizeof(x) / sizeof(x[0])));
return 0;
}
/*
注意程序返回的不是长方体的个数,而是可以构成直径点的对数
如果程序返回2,那么会有一个长方形,如果返回3,那么根据排列组合,会有C 3 2 个长方形,也就是6个
*/