一个算法问题求解?
大家只需给一个思路就行了啦 不能太模糊了啦,在清楚点 从0到9的数字组成一道一位数加两位数加三位数得四位数的算式不得重复数字
分析:由数学知识不难分析出,要使等式成立,def应代表尽可能大的三位数,ghij应代表尽可能小的四位数,因此必有d=9,g=1,h=0。a,b,c,e,f,i,j的值只能在2~8这7个数字中选取.我们可以用多重循环来列举出它们各种不同的取值情况,逐一地判断它们是否满足上述等式。
为了避免同一数字被重复使用,可设立逻辑数组x,x[i]值为True时表示数i没有被使用。 Private Sub cmdShow_Click() Dim a, b, c, d, e, f, g, i, j, h, u, v, n As Integer Dim str1 As String Dim x(1 To 9) As Boolean n = 0 For i = 1 To 9 x(i) = True Next Text1。
Text = "" g = 1: h = 0: d = 9 For a = 2 To 8 x(a) = False For b = 2 To 8 If x(b) Then x(b) = False For c = 2 To 8 If x(c) Then x(c) = False For e = 2 To 8 If x(e) Then x(e) = False For f = 2 To 8 If x(f) Then x(f) = False For i = 2 To 8 If x(i) Then x(i) = False For j = 2 To 8 If x(j) Then u = a + c + f + (b + e) * 10 + 900 v = 1000 + i * 10 + j If u = v Then str1 = Trim(Str(a)) + "+" + Trim(Str(b)) + _ Trim(Str(c)) + "+" + Trim(Str(d)) + Trim(Str(e)) + _ Trim(Str(f)) + "=" + Trim(Str(g)) + _ Trim(Str(h)) + Trim(Str(i)) + Trim(Str(j)) If n = 0 Then Text1。
Text = str1 ElseIf n Mod 3 = 0 Then Text1。Text = Text1。Text + Chr(13) + Chr(10) + str1 Else Text1。
Text = Text1。Text + Chr(13) + " " + str1 End If n = n + 1 End If End If Next x(i) = True End If Next x(f) = True End If Next x(e) = True End If Next x(c) = True End If Next x(b) = True End If Next x(a) = True Next Label1。
Caption = "解的个数:" + Trim(Str(n)) End Sub 。
用C写(只写必要部份): for(a=1;a<10;a++) for(b=1;b<10;b++) if(b!=a) for(c=0;c<10;c++) if(c!=a&&c!=b) for(d=1;d<10;d++) if(d!=a&&d!=b&&d!=c) for(e=0;e<10;e++) if(e!=a&&e!=b&&e!=c&&e!=d) for(f=0;f<10;f++) if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e) for(g=1;g<10;g++) if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f) for(h=0;h<10;h++) if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g) for(i=0;i<10;i++) if(i!=a&&i!=b&&i!=c&&i!=d&&i!=e&&i!=f&&i!=g&&i!=h) for(j=0;j<10;j++) if(j!=a&&j!=b&&j!=c&&j!=d&&j!=e&&j!=f&&j!=g&&j!=h&&j!=i) if(a+b*10+c+d*100+e*10+f==g*1000+h*100+i*10+j) printf("%d+%d+%d=%d\n",a,b*10+c,d*100+e*10+f,g*1000+h*100+i*10+j); 。
a*100+b*10+c>1000(如:984+30+1>1000满足要求,而984+30+1=9*100+(8+3)*10+(4+1) 然后用计算机逐个尝试,找出所有满足条件的算式——需要用到多重循环)
枚舉法就可以
用枚舉法.
答:无菌性前列腺炎,无菌性前列腺炎吃什么水果好? 得了前列腺炎吃什么药效果好呢?【前得乐通关免疫胶囊】专门呵护前列腺,针对前列腺肥大、前列腺炎、前列腺增生等前列腺问...详情>>
答:线性链表分好几种,分为单链,双链等,它们的存储顺序也不一样. 线性表是顺序存储的,占顺序的存储空间详情>>
问:电脑安装了VB6.0,为什么打开方式里面没有VB程序选项,进安装好的VB里去关联...
答:打开方式最下面还有一个《选择程序》,点开后查VB的安装目录的EXE,找到后直接打开,下次就会在打开方式里查到了详情>>