主题:数字拆分
tz_xinzhe
[专家分:200] 发布于 2007-07-18 11:41:00
大侠们,紧急求助数字拆分,不是普通的,要是排列的,也就是拆下的数要能排列!!!!!!!比如:输入:4
打印:121,211,......
回复列表 (共7个回复)
沙发
tz_xinzhe [专家分:200] 发布于 2007-07-18 16:01:00
不是这种形式,好好看题目,121,211,算两种
板凳
tz_xinzhe [专家分:200] 发布于 2007-07-18 16:07:00
kuai qu zhao ren ya
3 楼
Matodied [专家分:7560] 发布于 2007-07-18 20:46:00
这个题人家已经出过类似的了。
DECLARE SUB pri ()
CLS
DIM SHARED k, total, t
INPUT k
DIM SHARED a(k)
s = 0: t = 1
DO
a(t) = a(t) + 1: s = s + a(t)
IF s >= k THEN
IF s = k THEN CALL pri
s = s - a(t): t = t - 1
IF t = 0 THEN EXIT DO
s = s - a(t)
ELSE
t = t + 1: a(t) = 0
END IF
LOOP UNTIL t = 0
PRINT "Total="; total
END
SUB pri
PRINT k; "=";
FOR i = 1 TO t - 1: PRINT a(i); "+"; : NEXT i
PRINT a(t)
total = total + 1
END SUB
4 楼
tz_xinzhe [专家分:200] 发布于 2007-07-18 20:55:00
不要用子程序做,另外要把拆分的过程写出来!!!!!!!!!!!!!!!
[em52][em52][em52][em52][em52][em52]
[em21][em21][em21][em21][em21][em21]
5 楼
Matodied [专家分:7560] 发布于 2007-07-18 21:11:00
CLS
INPUT k
DIM a(k)
s = 0: t = 1
DO
a(t) = a(t) + 1: s = s + a(t)
IF s >= k THEN
IF s = k THEN
PRINT k; "=";
FOR i = 1 TO t - 1: PRINT a(i); "+"; : NEXT i
PRINT a(t)
total = total + 1
END IF
s = s - a(t): t = t - 1
IF t = 0 THEN EXIT DO
s = s - a(t)
ELSE
t = t + 1: a(t) = 0
END IF
LOOP UNTIL t = 0
PRINT "Total="; total
END
6 楼
Lovely哆啦 [专家分:1360] 发布于 2007-07-20 09:18:00
DECLARE SUB WSY ()
CLS
DIM SHARED T, S, X, N, K
INPUT N
DIM SHARED A(N)
T = 1
DO
A(T) = A(T) + 1: S = S + A(T)
IF S >= N THEN
IF S = N AND T > 1 THEN CALL WSY
S = S - A(T): T = T - 1: S = S - A(T)
ELSE T = T + 1: A(T) = 0
END IF
LOOP UNTIL T = 0
PRINT "S="; X
END
SUB WSY
K = K + 1
PRINT K; ":"; N; "="; A(1);
FOR I = 2 TO T: PRINT "+"; A(I); : NEXT I: PRINT
X = X + 1
10 END SUB
7 楼
我的电脑 [专家分:990] 发布于 2007-10-10 18:33:00
DECLARE SUB WHY ()
CLS
DIM SHARED T, S, X, N, K
INPUT N
DIM SHARED A(N)
T = 1
DO
A(T) = A(T) + 1: S = S + A(T)
IF S >= N THEN
IF S = N AND T > 1 THEN CALL WHY
S = S - A(T): T = T - 1: S = S - A(T)
ELSE T = T + 1: A(T) = 0
END IF
LOOP UNTIL T = 0
PRINT "S="; X
END
SUB WHY
K = K + 1
PRINT K; ":"; N; "="; A(1);
FOR I = 2 TO T: PRINT "+"; A(I); : NEXT I: PRINT
X = X + 1
10 END SUB
我来回复