[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 29CM长的尺子,刻7个刻度,量出1~29CM的各种长度,问应怎样刻?

    一根29CM长的尺子,只允许在上面刻7个刻度,要能用它量出1~29CM的各种长度。试问应怎样选择刻度?(小学组竞赛题)

[ 本帖最后由 curious 于 2009-6-20 09:40 编辑 ]

不知道我的理解正确否?

参考2进制,在1,2,4,8,16CM处刻就可以了,也就是说刻这5个刻度就能任意量1-31CM的长度
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

楼主的命题有点问题吧,   应当要加个"一次性量"出1~29CM  ,   不然我就刻一个一厘米的 ,  只要你有愚公精神把地球量一圈都行

楼上的和我想的差不多,但是也做不到一次性量出1~29CM   无论你怎么刻尺子,
1  2   1+2=3  4  1+4=5  4+2=6 1+2+4=7  8  1+8=9  2+8=10 1+2+8=11 4+8=12  1+4+8=13 2+4+8=14  1+2+4+8=15  16    1+16=17 .............如此下去


因为是刻在尺子上不能任意组合数字所以


1 2 4  8  16  是一次性量不出来的

呵呵

[ 本帖最后由 x9tiancmd 于 2009-6-20 14:53 编辑 ]
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

1 4 10 16 17 22 27
这样算对不

TOP

确定问题解的条件:要判断能否将1~29cm的刻度量出来,应先计算a1~a7刻度所能确定的长度。假定a1<a2<a3<a4<a5<a6<a7,那么可以确定的长度为:

a1, 29-a1;                                               2

a2, a2-a1,29-a2;                                          3

a3,a3-a2, a3-a1,29-a3;                                     4

a4,a4-a3,a4-a2, a4-a1,29-a4;                                5

a5,a5-a4,a5-a3,a5-a2, a5-a1,29-a5;                           6

a6,a6-a5,a6-a4,a6-a3,a6-a2, a6-a1,29-a6;                      7

a7,a7-a6,a7-a5,a7-a4,a7-a3,a7-a2, a7-a1,29-a7;                 8



能构成的刻度总数为2+3+4+5+6+7+8=35种,但有重复,也不能保证1~29。



可以用标记数组B[1]~b[29]=0 或1的方法来确定某个刻度的可测性。

TOP

9 楼njwangchuan(川儿)回复于 2005-10-19 07:42:49 得分 0

下定论了我:   
              1   3   6   13   20   24   28   
              1   5   9   16   23   26   28(上面的镜象解)   
              1   2   14   18   21   24   27(2   5   8   11   15   27   28)   
              1   4   10   16   22   24   27(2   5   7   13   19   25   28)   
   
  全部六组解,不用再争了,且29是7个刻度的极限了~~



代码是JAVA的。

感觉思维被局限了,不一定是要连续解出。。。

不是说给出前3个刻度就要算出这3个刻度以前的。。。

比如第一组4,5都是由后面的刻度记录的。


有时候还是写个程序让它跑起来给结果比自己想的好。
人脑太慢了。。。
1

评分人数

TOP

pascal代码,是典型穷举法

  1. Program  p2;
  2. Const  n=29; m=1;
  3. Var a:array[1..7] of integer;
  4.     B:array[1..n] of 0..1;
  5.     F:boolean;
  6.     I,j:integer;
  7. Begin
  8.    a[1]:=m;
  9.    for a[2]:=2 to n-7 do
  10.     for a[3]:=a[2]+1 to n-6 do
  11.       for a[4]:=a[3]+1 to n-5 do
  12.         for a[5]:=a[4]+1 to n-4 do
  13.            for a[6]:=a[5]+1 to n-3 do
  14.               for a[7]:=a[6]+1 to n-2 do
  15.                 begin
  16.                  for i:=1 to 29 do b[i]:=0;
  17.                  for i:=1 to 7 do
  18.                    begin
  19.                      b[a[i]]:=1;b[n-a[i]]:=1;b[n]:=1;{初始化}
  20.                      for j:=i+1 to 7 do b[abs(a[j]-a[i])]:=1
  21.                    end;
  22.                  j:=0;
  23.                  for i:=1 to n do j:=j+b[i];
  24.                  if  j=n then begin
  25.                    for i:=1 to 7 do write(a[i]:4);    writeln;
  26.                    end;
  27.                end;
  28. end.
复制代码

TOP

返回列表