问个算术算法,个人感觉超级难,实现 送高分

peilianhai 2008-03-07 04:16:06
已知
a b c 都是 48到57 的数字

c+a=103 或 104
a+b=100 或 101
b+c=105 或 106

求 a b c 值的可能性排列,求算法
...全文
85 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbx1982 2008-03-07
  • 打赏
  • 举报
回复
首先向楼主道个歉,其实没有恶意的。
其次,有个疑问,个人感觉应该和yangda821231的算法没有区别,而且a+b如果条件不符合的话,根本没有必要去循环c了。
会有什么错误吗?

补充:我觉得把while (a <= 57)改为for(int a = 48;...;...)会更好,没有必要去重新给b,c重置了
peilianhai 2008-03-07
  • 打赏
  • 举报
回复
hbx1982 做法 不严谨,不符合要求

yangda821231 兄弟,做的不错 ,看到联系我,再给你分

可惜加错了分!

peilianhai 2008-03-07
  • 打赏
  • 举报
回复
刚才我也写了代码,原来这么简单啊
Dim a(10), b(10), c(10) As Integer
a(0) = 48
a(1) = 49
a(2) = 50
a(3) = 51
a(4) = 52
a(5) = 53
a(6) = 54
a(7) = 55
a(8) = 56
a(9) = 57
b = a
c = a

Dim i, j, k As Integer
Dim flag1, flag2 As Boolean
Dim Result(0) As String

For i = 0 To a.Length - 1 'a
For j = 0 To b.Length - 1 'b
'判断a+b=100 101
If a(i) + b(j) = 100 Or a(i) + b(j) = 101 Then
flag1 = True
Else
flag1 = False
End If

If flag1 = True Then
For k = 0 To c.Length - 1 'c
'判断b+c=105 106
If b(j) + c(k) = 105 Or b(j) + c(k) = 106 Then
flag2 = True
End If

If flag2 = True Then
'判断a+c=103 104
If a(i) + c(k) = 103 Or a(i) + c(k) = 104 Then
'OK 结果符合要求
ReDim Preserve Result(Result.Length)
Result(Result.Length - 1) = Chr(a(i)) & Chr(b(j)) & Chr(c(k))
End If
End If
Next
End If
Next
Next

Dim outstr As String
For i = 1 To Result.Length - 1
outstr += Result(i).ToString & " " & vbCrLf
Next
TextBox4.Text = outstr
hbx1982 2008-03-07
  • 打赏
  • 举报
回复
本想赚点分的,结果发现楼主没有结帖习惯,看来白忙活了。
-_-!!!
下班,走人!各位周末愉快!
菜鸟A队 2008-03-07
  • 打赏
  • 举报
回复
dim array as arraylist

for a as integer = 48 to 57
for b as integer = 48 to 57
for c as integer = 48 to 57
if (c+a=103 orelse c+a=104) and (a+b=100 orelse a+b=101) _
and (b+c=105 orelse b+c=106 )
Console.WriteLine(a &" "& b &" "& c )
endif
next
next
next
hbx1982 2008-03-07
  • 打赏
  • 举报
回复
输出:
a = 49 b = 51 c = 54
a = 49 b = 52 c = 54
不知对否?
hbx1982 2008-03-07
  • 打赏
  • 举报
回复
int a = 48, b = 48, c = 48;
while (a <= 57)
{
while (b <= 57)
{
if (a + b == 100 || a + b == 101)
{
while (c <= 57)
{
if ((a + c == 103 || a + b == 104) && (b + c == 105 || b + c == 106))
{
Console.WriteLine("a = " + a.ToString() + "\tb = " + b.ToString() + "\tc = " + c.ToString());
}
c += 1;
}
}
b += 1;
c = 48;
}
a += 1;
b = 48;
c = 48;
}

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧