找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 615|回复: 0

[【解决】] C程序

[复制链接]
lc121660 该用户已被删除
发表于 2005-6-29 00:34:30 | 显示全部楼层 |阅读模式
1.    将2n个和2n个1,排成一个圈。从任一个位置开始,每次按逆时针的方向以长度为N+1的单位进行数二进制数。要求给出一种排法,用上面的方法产生出来的2n+1个二进制数都不相同。 例如,当N=2时,即22个0和22个1排成如下一圈:    位置开始比如,从A,逆时针方向取三个数000,然后再从B位置上开始取三个数001,接着从C开始取三个数010,…可以得到000,001,010,101,011,111,110,100共8个二进制数且都不相同。 程序说明 以N=4为例,即有16个0,16个1,数组A用以记录32个0,1的排法,数组B统计二进制数是否已出现过。 程序清单 10 DIM A(36),B(31) 20 FOR I=1 TO 36:A(I)=0:NEXT I 30 FOR I=28 TO 32:A(I)=1:NEXT I 40 P=1:A(6)=1 50 IF P=0 THEN 230 60 J=27 70 IF ① THEN 100 80 J=J-1 90 GOTO 70 100 A(J)=1 110 FOR I=J+1 TO 27: ② :NEXT I 120 FOR I=0 TO31:B(I)=0: NEXT I  130 FOR I=1 TO 32 140 ③ 150 FOR J=I TO I+4 160 S=S*2+A(J) 170 NEXT J 180 ④ 190 NEXT I 200 S=0  210 FOR I=0 TO 31:S=S+B(I):NEXT I 220 IF ⑤ THEN 50 230 P=0 240 FOR I=1 TO 32 245 FOR J=I TO I+4 246 PRINT A(J); 248 NEXT J,I:END

还有个图

270231028

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-11-19 01:39 , Processed in 0.113929 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表