精华帖 (3) :: 良好帖 (10) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-13
最后修改:2009-07-13
额。
看惯了X,Y,Z 不习惯小霸王 Y+10Z=89X 或者 [T1][T1]+[T2][T2]+[T3][T3]=[T1][T2][T3] 额,距阵哦,不清楚有解不。 |
|
返回顶楼 | |
发表时间:2009-07-13
用穷举法 是最好的办法 我感觉 只不过上面有个例子写的有点麻烦 木有算法
~! |
|
返回顶楼 | |
发表时间:2009-07-13
最后修改:2009-07-13
例子:11+99+88=198,求满足这样要求的数,1,9,8等等~
|
|
返回顶楼 | |
发表时间:2009-07-13
rickwang 写道 例子:11+99+88=198,求满足这样要求的数,1,9,8等等~
高,看到这终于整明白这题目的意思 |
|
返回顶楼 | |
发表时间:2009-07-13
看不出为什么非要和sql扯上关系;用sql来证明,怎么意思啊?????
|
|
返回顶楼 | |
发表时间:2009-07-13
最后修改:2009-07-14
我写了个java实现:
import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; public class Test { /* 已知 小小+霸霸+王王=小霸王 小=?,霸=?,王=? 算法:89 * x2 = x1 + 10 * x0 */ public static void main(String[] args) { Set<String> result = new LinkedHashSet<String>(); for (int x2 = 0; x2 <= 9; x2++) { for (int x1 = 0; x1 <= 9; x1++) { for (int x0 = 0; x0 <= 9; x0++) { if (isXiaoBaWang(x2, x1, x0)) { result.add(new StringBuilder().append(x2).append(x1).append(x0).toString()); } } } } System.out.println("共 " + result.size() + " 个小霸王"); for (Iterator<String> it = result.iterator(); it.hasNext();) { String xbw = (String) it.next(); System.out.println(xbw); } } private static boolean isXiaoBaWang(int x2, int x1, int x0) { if ((0 <= x2 && x2 <= 9) && (0 <= x1 && x1 <= 9) && (0 <= x0 && x0 <= 9)) { if (x2 * 89 - x1 - x0 * 10 == 0) { return true; } else { return false; } } else { return false; } } } |
|
返回顶楼 | |
发表时间:2009-07-13
rickwang 写道 例子:11+99+88=198,求满足这样要求的数,1,9,8等等~
呵呵,看懂啦,这样的话就不算很难了 |
|
返回顶楼 | |
发表时间:2009-07-13
单纯从题目来看 只有 1,9,8符合
菜鸟Java程式如下: package test; public class TQTest { /** * @param args */ public static void main(String[] args) { int maxValue = 297; int minVaule = 100; int temp1[] = null; for(int i = minVaule;i<=maxValue;i++) { temp1 = returnChangeValue(i); if(temp1!=null && temp1.length==3) { if(temp1[0]!=0 && temp1[1]!=0 && temp1[2]!=0) { System.out.println(temp1[0]+" "+temp1[1]+" "+temp1[2]); } } } } private static int[] returnChangeValue(int temp) { int x,y,z; int value = temp; x = temp/100; temp = temp%100; y = temp/10; temp = temp%10; z = temp; if(x+x*10+y*10+y+z*10+z == value) { return new int[]{x,y,z}; }else { return new int[]{0,0,0}; } } } |
|
返回顶楼 | |
发表时间:2009-07-13
icefishc 写道 create table n_table (n int) -- n 为 0..9 select a.n, b.n, c.n from n_table a, n_table b, n_table c where 11 * (a.n + b.n + c.n) = a.n * 100 + b.n * 10 + c.n 赞一个! |
|
返回顶楼 | |
发表时间:2009-07-13
呵呵.有点意思. 就是用sql 来穷举,明白了就容易了.
|
|
返回顶楼 | |