`
lbay
  • 浏览: 25098 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

印象很深的一次面试

阅读更多
曾经面试遇到的问题:
1. 色子(6个面),N个色子,把所有组合输出来,去掉重复的(如:3个色子: 1,2,3的组合 和  3,2,1的组合 或者 2,3,1 的组合 都示为重复的 )
2. 画TABLE,所有单元格相临的颜色都不能有重复的.


这2个问题说明:

当时去了一家公司面试,环境挺好,也挺不错.
面试很简单.也很到位.

就给了我3个题. 并且只要做出其中2个题就可以.时间是5小时. 我看了下题.选的是其中的2个. 还有一个忘记了.

------重点希望有朋友可以解答第1题. 因为我只做了第1题. 5小时.还没做出来.-------

是这样的。题目很简单。但是少一点都不能正确完成。
1。N代表色子个数(输入N就能得到答案)
2。色子只有1-6
3。除去重复的组合
4。组合必须要正确
(如:3个色子,
组合开始是:
1.1.1 
1.1.2
....
6.6.6


我当时只写出指定几个色子的方法。说白了就是循环。但就是不会写出N个色子的方法,因为N不稳定,循环次数不确定。

我不是很确定。但是总觉的递规可以解决N这个问题。

很希望有朋友可以用递规解决。(如果可以的话)


其实给出答案的朋友,用的是找规律和String的截取方法。

但我觉的正确的一次性输出想要的答案才算最佳!

很感谢回答的朋友,希望大家继续一起讨论。






以下是曾经发贴回复中,写出的实现方法!


public class DiceArith {

/**
* 数组转字符
*
* @return
*/
public static String arraysToString(String[] s) {
String t = "";
for (int i = 0; i < s.length; i++)
t += s[i];
return t;
}

/**
* 方法一
*
* @param N
*/
public static void method1(int N) {
TreeSet<String> tree = new TreeSet<String>();
long start = 1, end = 6;
for (int i = 1; i < N; i++) {
start += 1 * convert(10, i);
end += 6 * convert(10, i);
}
String[] data;
for (long j = start; j <= end; j++) {
if (expValid(j + "")) {
data = String.valueOf(j).split("");
Arrays.sort(data);
tree.add(arraysToString(data));
}
}

for (Iterator<String> t = tree.iterator(); t.hasNext();) {
String d = t.next();
System.out.println(d);
}
}

public static void main(String[] args) {
method1(3);
}

/**
* 计算平方根
*
* @param data
* @param n
* @return
*/
public static long convert(int data, int n) {
long result = 1l;
for (int i = 1; i <= n; i++)
result *= data;
return result;
}

/**
* 正则验证色子数在【1-6】范围内
*
* @param s
* @return
*/
public static boolean expValid(String s) {
Pattern p4 = Pattern.compile("^[1-6]+$");
Matcher m4 = p4.matcher(s + "");
if (m4.find())
return true;
else
return false;
}
}




1
1
分享到:
评论
2 楼 lbay 2010-07-28  
a881127b 写道
这个解法不错,但是没有输出如:121这样的情况。




如果已经输出了 112
那么 121 211 都不再输出.都示为重复的


另外.本人很想有人能用递归做出来.代码更简洁点.!
1 楼 a881127b 2010-07-28  
这个解法不错,但是没有输出如:121这样的情况。

相关推荐

Global site tag (gtag.js) - Google Analytics