下图中有4行方格,这10个格子中填入0~9这10个不同的数字,每行构成一个自然数,组成4个位数各不相同的自然数,已知这4个自然数都是某个整数的平方,求出所有的填写方案。一种可行的方案:9,81,324,7056。
图
【输出文件】 输出文件nmber.out文件包括若干行,每一行为一种可行的方案,包括四个整数,整数之间用一个空格分隔,最后一个数据后无空格。 【输出样例】输出数据中的一行示例为: 9 81 324 7056
free pascal方格填数(速进,小学学的初中又忘了)20分
for i:=1 to 10 do if not b[a[i]] then b[a[i]]:=true{a[i]是填入方格的数,如果未填入,就设为已填入} else b1:=false;{填入就把临时变量设为false(有重复)} if b1 then writeln(a1,' ',a2,' ',a3,' ',a4);{如果没重复过就输出} end;end.
free pascal方格填数(急~~~在线等)
剪枝1:第一行必须满足是平方数才能进入下一行。剪枝2:所填的数字不能和已经填过的数字重复。注意一下第一列能不能是0的问题。如果不会搜索回溯算法,自己学吧。
free pascal方格填数(急~~~在线等)
百度毁了我的格式...将就看吧,朴素算法..var use:array[0..9] of boolean;i,j,k,l,a,b,c,d,e,o,p,q,r:longint;begin for i:=0 to 9 do \/\/第一位的循环 begin if round(sqrt(i))<>sqrt(i) then continue; \/\/判断是不是平方 use[i]:=true; \/\/表示它用过了 ...