首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一道Tencent面试题,该如何处理

2012-01-21 
一道Tencent面试题小小+霸霸+王王小霸王用SQL列举出结果(下面是javaEye上的网友写的)create table n_tabl

一道Tencent面试题
小小+霸霸+王王=小霸王

用SQL列举出结果(下面是javaEye上的网友写的)

create table n_table (n int)

insert n_table values(1);//把1到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 

相当java代码里面 三个 for 循环,或者 Y+10Z=89X,然后把符合条件的 输出。也有网友给出了 java代码。(这对我们程序员不算问题吧,这里就不列出)

个人想了下,单纯从这道题目来看,可不可以先分析下?

从题目可以得知 小霸王 的取值范围会在 100-297之间。我们不用循环判断,我们从 小霸王 往反向拆分

然后在拆分里面 加 符合上面条件的判断,这样循环应该减少很多次吧。个人没学过数据结构,只能这样写写。嘿嘿。

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};
  }
  }
}

感觉还是蛮局限的,没有提炼出通用的办法,纯粹为解决问题而写,数据结构白痴啊。


抛砖(估计砖的级别都没到,嘿嘿)引玉,等待高手,是否能从数据结构方面优化下

[解决办法]
我就想知道 腾讯和小霸王是什么关系
难道马化腾就是当年小霸王的股东之一?
[解决办法]
呵呵,我是语文白痴,没大看懂楼主的意思。
不过,遍了一个简单的代码。

Java code
public static String fun(String arg1,String arg2,String arg3){if(arg1==null || arg2==null || arg3==null)return null;if(arg1.length()==2 && arg2.length()==2 && arg3.length()==2){  if(arg1.charAt(0)==arg1.charAt(1) && arg2.charAt(0)==arg2.charAt(1) && arg3.charAt(0)==arg3.charAt(1)){     StringBuilder sb = new StringBuilder(3);     sb.append(arg1.charAt(0)).append(arg2.charAt(0)).append(arg3.charAt(0));     return sb.toString();  }}return null;}
[解决办法]
Tencent真难进!
[解决办法]
学习学习
[解决办法]
谢谢分享,我也学习哦。哈
[解决办法]
Java code
public class TQTest {     public static void main(String[] args){         int maxValue = 300;         int minVaule = 121;         int ge,shi,bai;        for(int i = minVaule;i <=maxValue;i+=11){             ge=i%10;            shi=i/10%10;            bai=i/100;            if(11*(ge+shi+bai)==i){                System.out.println(bai +" "+shi +" " +ge+" ");            }        }    }}
[解决办法]
只有一个解啊
------解决方案--------------------


可以简化的 ~
[解决办法]
有点小难!!
[解决办法]

Java code
public class AddCompute {    /**     * 首先分析结果范围在100-297之间     * 再分析可以知道第一位和第二位只能是11+99或22+88的组合(由于第三位要个各位相同,因此前两位数字和应该为10),只需检测第3位     * @param args     */    public static void main(String[] args) {        for (int i = 0; i < 9; i++) {            if (i*10+i+11+99 == 190+i) {                System.out.println(1+"  "+9+"  "+i);            }            if(i*10+i+22+88 == 280+i){                System.out.println(2+"  "+8+"  "+i);            }        }    }}
[解决办法]
1.9.8,腾讯出题,就是不一般,不过用sql到时有意思
[解决办法]
关注!
[解决办法]
根据中文汉字的范围来判断感觉不合适,应该从规律角度考虑吧。
[解决办法]
这题有个规律 就是左边的数都要乘以11 这说明右边的结果 可以被11整除,如果不能整除则说明 不是想要的结果
那么循环 100-(99+99+99=297)次 就可以了 用每次的结果 处以11 如果能够整除 则判断 
如:198可以被11整除 则 百十个位数乘以11相加 是否与198相等,如相等,则说明是想要的结果。
这个思路 5分钟应该可以写出代码了
[解决办法]
不知道LZ在说什么,你的代码比较晦涩哈
[解决办法]
恩,的确有些道理
[解决办法]
这道题应该考察的是基本的算法能力,也就是减少计算的次数,在这个题中只需要两重循环就可实现结果的计算
[解决办法]
XX+YY+ZZ = XYZ 是不是 符合某种 数学公式啊,本人数学不好 -_-! 。 

 xx
+yy
+zz
-------
xyz 得出 x+y=0 ,如果不等于0,个位数就不是z了,对不!
在看百位数,有百位树,证明十位树 进位了,而且只能进1
得出 x=1 z=9 ,带入 y=8

[解决办法]
大哥这是面试题么?
[解决办法]
43楼分析的牛,哈哈……
[解决办法]
tencent的题目还真的不一般!
[解决办法]
关注
[解决办法]
学习学习!!
[解决办法]
我也写一个
Java code
public class TT{    public static void main(String[] args)    {        int a, b, c;                for(a = 1; a < 3; a++)        {            b = (a * 89) % 10;            c = (89 * a - b) / 10;            if(c < 10)                System.out.println("a = " + a + "\nb = " + b + "\nc = " + c);        }    }}
[解决办法]
太强了,学习了
[解决办法]
晕,没看明白题目。。。。
[解决办法]
学习
[解决办法]
小小
霸霸
+ 王王
--------
小霸王

看最后一位,得出:小+霸=10
倒数第二位,得出:小+王=9
那么最后的小就是进位来的1
所以答案是189
[解决办法]
学习了,
------解决方案--------------------


路过..学习学习..
[解决办法]
还是没看明白.我是菜鸟.呵呵

热点排行