一根29cm长的尺子,只允许在它上面刻7个刻度。若要用它能量出1~ 29cm的各种整长度,刻度应如何选择?
代码如下:
#include <stdio.h>
int main(void)
{
int flag, mark[9];
int a, b, c, d, e, f, g;
int i, j;
int count = 0;
mark[0] = 0;
mark[8] = 29;
for(a=1; a<23; a++)
{
mark[1] = a;
for(b=a+1; b<24; b++)
{
mark[2] = b;
for(c=b+1; c<25; c++)
{
mark[3] = c;
for(d=c+1; d<26; d++)
{
mark[4] = d;
for(e=d+1; e<27; e++)
{
mark[5] = e;
for(f=e+1; f<28; f++)
{
mark[6] = f;
for(g=f+1; g<29; g++)
{
mark[7] = g;
flag = 1;
for(i=0; i<8; i++)
{
for(j=i+1; j<9; j++)
{
flag |= (1 << (mark[j] - mark[i]));
}
}
if(flag == 0x3fffffff)
{
printf("NO.%d:\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t\n", ++count, a, b, c, d, e, f, g);
}
}
}
}
}
}
}
}
return 0;
}
运行结果如下:
E:\Workspace>tcc -run demo.c
NO.1: 1 2 14 18 21 24 27
NO.2: 1 3 6 13 20 24 28
NO.3: 1 4 10 16 22 24 27
NO.4: 1 5 9 16 23 26 28
NO.5: 2 5 7 13 19 25 28
NO.6: 2 5 8 11 15 27 28
本文探讨了如何在29cm长的尺子上仅刻7个刻度来测量1到29cm的所有整数长度。通过C语言程序求解,找到了6种可能的刻度方案。
2644





