大榕树——让我们共成长!
大榕树 myDrs.org
您的位置:大榕树 \ 编程       |  Logo语言   |  Pascal语言   |  信息学奥赛   |  高考保送    |  HTML版本
|  Pascal语言>>Pascal练习>>组合三位平方数         本站全文搜索: 友情提示:

组合三位平方数
http://www.mydrs.org  10/6/2001  大榕树


穷举法

例一:

请你设计一个程序,将1~9这九个数字组成的三个三位的平方数,要求每个数字只准使用一次。

问题分析:

搜索范围:100~999;

题目中要求的是三位数的平方,所以只搜索102~312;

题目要求1~9只用1次,所以排除有重复数字和数字0的平方数;

开辟有21个单元的数组Q(I),用于存放11~31的平方,再开辟有9个单元的数组K(I),每个数组单元代表一位数字;

搜索时,每次选择三个平方数,把这三个平方数的每一位数字存放在相对应的数组单元中,若某个单元的数字大于1,说明有重复数字出现,否则找到问题的解;

为了保证搜索没有遗漏,用一个三重循环来控制选择平方数的顺序;

附Basic程序清单,请你用Pascal编程练习。

CLS

DIM q(21), k(9): s = 0

FOR i = 11 TO 31

x = i * i: GOSUB 3

IF (l1 = l2) OR (l2 = l3) OR (l1 = l3) THEN GOTO 1

s = s + 1: q(s) = x

1 NEXT i

FOR j = 1 TO 9: k(j) = 0: NEXT j

FOR a = 1 TO s - 2

FOR b = a + 1 TO s - 1

FOR c = b + 1 TO s

x = q(a): GOSUB 3

x = q(b): GOSUB 3

x = q(c): GOSUB 3

FOR i = 1 TO 9 : IF k(i) > 1 THEN GOTO 2 : NEXT i

PRINT q(a), q(b), q(c): END

2 FOR j = 1 TO 9: k(j) = 0: NEXT j

NEXT c

NEXT b

NEXT a

END

3 :

x$ = STR$(x)

l1 = VAL(MID$(x$, 2, 1)): k(l1) = k(l1) + 1

l2 = VAL(MID$(x$, 3, 1)): k(l2) = k(l2) + 1

l3 = VAL(MID$(x$, 4, 1)): k(l3) = k(l3) + 1

RETURN

答案:

361 529 784

来 源:网络之家
共有4928位读者阅读过此文

  • 上篇文章第五届分区联赛普及组复赛
  • 下篇文章埃及分数之和

  • 发送邮件
    保存页面 打印文章 HTML版本 发表评论

    □- 近期热门文章 □- 相关文章
    1. NOIP2006竞赛大纲 [8307]
    2. 七类高中生具有保送资格 [5911]
    3. NOI2006获奖选手名单 [4956]
    4. 关于举办NOIP2006模拟赛的通告 [4107]
    5. Turbo Pascal各语句运行速... [3595]
    6. Turbo王者归来新Delphi免费... [3182]
    7. IOI2006我国4名选手全部获得金... [2946]
    8. 关于APIO2007与IOI2007... [2764]
    9. noip倒计时 by 枯叶蝴蝶 [2684]
    10. 朱泽园:思想上的金牌更重要 [2169]
    组合三位平方数
     

    关于本站 | 合作伙伴 | 联系方式
    大榕树 版权所有 ©1999-2006 www.myDrs.org 闽ICP备05000721号