黑马程序员技术交流社区
标题:
一道微软的面试题
[打印本页]
作者:
kimi
时间:
2013-5-29 20:46
标题:
一道微软的面试题
本帖最后由 kimi 于 2013-5-31 01:09 编辑
请回答下面10个问题:
1、第一个答案是b的问题是哪一个?
(a)2;(b) 3;(c)4;(d)5;(e)6
2、唯一的连续两个具有相同答案的问题是:
(a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7;
3、本问题答案和哪一个问题的答案相同?
(a)1;(b)2;(c)4;(d)7;(e)6
4、答案是a的问题的个数是:
(a)0;(b)1;(c)2;(d)3;(e)4
5、本问题答案和哪一个问题的答案相同?
(a)10;(b)9;(c)8;(d)7;(e)6
6、答案是a的问题的个数和答案是什么的问题的个数相同?
(a)b;(b)c;(c)d;(d)e;(e)以上都不是
7、按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
(a)4;(b)3;(c)2;(d)1;(e)0。
8、答案是元音字母的问题的个数是:
(a)2;(b)3;(c)4;(d)5;(e)6。
9、答案是辅音字母的问题的个数是:
(a)一个质数;(b)一个阶乘数;(c)一个平方数;(d)一个立方数,(e)5的倍数
10、本问题的答案是:
(a)a;(b)b;(c)c;(d)d;(e)e
研究了半天,哪位大神研究好了交流一下啊
作者:
逸盏清茶
时间:
2013-5-30 00:10
沙发!等楼下回答
作者:
张俊迪
时间:
2013-5-30 01:47
这么犀利的题,用力一个多小时,应该是
1c,2d,3e,4b,5e,6e,7d,8c,9b,10a.
上来先判断第三个可以退出只能选d和e但是当为d时候上下推一下不成立,具体的忘了,可是当时推的时候记下了顺序,1c,2e,3d,4c,5e,6e,7d,8e推到第八个好像就问题,具体的你自己试试,下面用为e推的时候现将前六个退出来,在推下面四个,详细的说不出来了,先从第三个开始判断,我是这样来的
作者:
HM张博文
时间:
2013-5-30 08:44
好像题目没有写完全吧?
作者:
李征
时间:
2013-5-30 09:34
这题目出的也太消耗脑细胞了,那第一题来说,首先肯定不是B,因为,B是3.如果是B的话,那么第三题的答案也是B,这就和第一题说第一个是B的是第三题相矛盾了,排除。。恩大概就是这么个思路,然后所有题目一起找一个很微妙的相互关系,如非必要,理解下就行了吧
作者:
孙茜茜
时间:
2013-5-30 09:41
纯逻辑题啊。。。找到入口就好了
作者:
First
时间:
2013-5-30 15:09
楼主,就让我来给你一个满意的答案好了,希望楼主能认真看看我的代码--
个人解答:
import java.util.Arrays;
import java.util.TreeMap;
public class MyDemo1 {
/**
* @param args
*/
public static void main(String[] args) {
MyAns ma = new MyAns();
//System.out.println(ma.ans);
//ma.get5(9765624,9);
//ma.showAns();
ma.show();
}
}
class MyAns{
int[] ans = new int[10];//答案的数字化数组
TreeMap<Integer, Integer> tm;//存储每一个答案出现的次数,比如a出现几次,b出现几次
int[][] ques = {//数字化每一道题目,题目的编号从0开始计算,方便数组遍历。
//同理,答案a,b,c,d,e也从0开始计算。
{1,2,3,4,5},//0
{1,2,3,4,5},//1
{0,1,3,6,5},//2
{0,1,2,3,4},//3
{9,8,7,6,5},//4
{1,2,3,4,5},//5
{4,3,2,1,0},//6
{2,3,4,5,6},//7
{0,1,2,3,4},//8
{0,1,2,3,4}};//9
public void show() {//解决问题的核心部分。
System.out.println("start");
for(int i=0;i<9765625;i++){//遍历每一种情况的可能性
get5(i,9);
tm = showMap(ans);
//showAns();
int num8 = mget(1)+mget(2)+mget(3);
if((firB()==ques[0][ans[0]])
&&(sec()==ques[1][ans[1]])
&&(ans[2]==ans[ques[2][ans[2]]])
&&(mget(0)==ques[3][ans[3]])
&&(ans[4]==ans[ques[4][ans[4]]])
&&(isFive(ques[5][ans[5]]))
&&(Math.abs(ans[6]-ans[7])==ques[6][ans[6]])
&&(mget(0)+mget(4)==ques[7][ans[7]])
&&(isEight(num8, ques[8][ans[8]]))
&&(ans[9]==ques[9][ans[9]])){//判断每一种可能性的每一道题目是否符合答案
showAns();//打印出满足所有题目的答案数组
}
}
System.out.println("end");
}
public void showAns(){//打印出答案的数组
Character[] chs = new Character[10];
for(int i =0;i<10;i++){
chs[i]=(char)(ans[i]+'a');
}
System.out.println(Arrays.asList(chs).toString());
}
public TreeMap<Integer, Integer> showMap(int[] ins){//把已知数组装到map中
//存储每一个答案出现的次数,比如a出现几次,b出现几次
TreeMap<Integer, Integer> tm = new TreeMap<Integer, Integer>();
for (int c : ins){
Integer value = tm.get(c);
if(value == null)
value = 0;
value++;
tm.put(c, value);
}
return tm;
}
public void get5(int num,int count){//把十进制转换为五进制,存到int数组中,得到的就是
//每一道题目的答案值(0=a,1=b,2=c,3=d,4=e).
int x = num/5;
if(x>0){
get5(x,count-1);
}
ans[count] = num%5;
//System.out.println(ans[count]);
}
public int firB(){//第一个答案是b的问题是哪一个
for(int i=0;i<10;i++){
if(ans[i]==1)
return i;
}
return -1;
}
public int sec(){//返回第一个 两个答案相同的 数值
int count = 0;
int x = -1;
for(int i = 0;i<9;i++){
if(ans[i]==ans[i+1]){//连续2个问题的答案相同
count++;//确保个数唯一
x = i;}
}
if(!(count==1))//判断唯一的一个
return -1;//不唯一的情况
else
return x;//唯一的情况
}
public boolean isEight(int num, int in){
int[][] num8s = {{2,3,5,7},//一个质数的可能性
{1,2,6},//一个阶数的可能性
{1,4,9},//一个平方数的可能性
{1,8},//一个立方数的可能性
{0,5}}; //5的倍数的可能性。
int[] ints = num8s[in];
for(int i : ints){
if(num == i)
return true;
}
return false;
}
public boolean isFive(int num){//角标5号的问题,需要分情况判断
if(num<5)//答案是前4个的情况
return mget(0)==mget(ques[5][ans[5]]);
else{//以上都不是的情况
for(int i=1; i<5;i++){
if(mget(0)==mget(i))
return false;
}
return true;
}
}
public int mget(Integer i){//封装tm的get()方法 返回值为null的情况,
//否则,null与数字不能相加,也不能用于 == 的判断。
if(tm.get(i)==null)
return 0;
return tm.get(i);
}
}
复制代码
作者:
张旺达
时间:
2013-5-30 16:29
First 发表于 2013-5-30 15:09
楼主,就让我来给你一个满意的答案好了,希望楼主能认真看看我的代码--
个人解答: ...
{:soso_e136:}碉堡了
作者:
神之梦
时间:
2013-5-30 20:43
First 发表于 2013-5-30 15:09
楼主,就让我来给你一个满意的答案好了,希望楼主能认真看看我的代码--
个人解答: ...
对哥们五体投地
作者:
张勇1993
时间:
2013-5-30 21:15
First 发表于 2013-5-30 15:09
楼主,就让我来给你一个满意的答案好了,希望楼主能认真看看我的代码--
个人解答: ...
牛!!!!!!!!!!!!!!!!!!!
作者:
花心々小土豆
时间:
2013-5-30 22:57
First 发表于 2013-5-30 15:09
楼主,就让我来给你一个满意的答案好了,希望楼主能认真看看我的代码--
个人解答: ...
怎一个刁字了得!!
作者:
李玉江
时间:
2013-5-30 23:16
有些自卑啊我
作者:
First
时间:
2013-6-3 18:46
感谢各位的夸奖
相互学习
作者:
Union
时间:
2014-4-24 23:50
!!!!!!!!!!!!!!!!!!!!!!!!!!
作者:
Union
时间:
2014-4-24 23:52
First 发表于 2013-5-30 15:09
楼主,就让我来给你一个满意的答案好了,希望楼主能认真看看我的代码--
个人解答: ...
太吊了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2