前几天在人人上看到了一个名为最强逻辑题的东西,听说是微软的面试题目。然后看到我交一学长的代码,感觉好~漂亮= =于是就写了一份,好久没写过这么爽的代码了- -逻辑清楚的不行- -233333
题目是这个样子的:
题目不是很难,可以第一想法差不多应该是深搜~?No,显然应该10重循环嘛0.0效率是什么,能吃嘛~?
代码就是这样滴~
#include <iostream>
#include <cmath>
using namespace std;
int numberOfAnswer(int* ans, int testNumber)
{
int count = 0;
for (int i = 1; i < 11; i++)
{
if (ans[i] == testNumber)
count++;
}
return count;
}
int sameNumberAsAnswerA(int* ans)
{
int number[6] = { 0, 0, 0, 0, 0, 0 };
int test = numberOfAnswer(ans, 1);
for (int answer = 2; answer <= 5; answer++)
{
for (int i = 1; i < 11; i++)
{
if (ans[i] == answer)
number[answer]++;
}
}
for (int i = 2; i < 6; i++)
{
if (test == number[i])
return i;
}
return 6;
}
bool SameAnswerAsNo3(int *ans)
{
if (ans[3] == ans[1] && ans[3] == 1)
return true;
else if (ans[3] == ans[2] && ans[3] == 2)
return true;
else if (ans[3] == ans[4] && ans[3] == 3)
return true;
else if (ans[3] == ans[7] && ans[3] == 4)
return true;
else if (ans[3] == ans[6] && ans[3] == 5)
return true;
else return false;
}
int fxxkTheNinth(int number)
{
if (number == 3 || number == 7)
return 1;
else if (number == 10)
return 5;
else if (number == 4 || number == 9)
return 3;
else if (number == 6)
return 2;
else if (number == 8)
return 4;
else return 6;
}
bool overlap(int *ans)
{
int count = 0;
for (int i = 2; i < 11; i++)
if (ans[i - 1] == ans[i])
count++;
if (count == 1)
return true;
else return false;
}
void printArray(int *ans)
{
for (int i = 1; i < 11; i++)
{
if (ans[i] == 1)
cout << "A ";
else if (ans[i] == 2)
cout << "B ";
else if (ans[i] == 3)
cout << "C ";
else if (ans[i] == 4)
cout << "D ";
else if (ans[i] == 5)
cout << "E ";
else
cout << "GG";
}
cout << "\nend\n";
}
int main()
{
int ans[11];
for (ans[1] = 1; ans[1] <= 5; ans[1]++)
for (ans[2] = 1; ans[2] <= 5; ans[2]++)
for (ans[3] = 1; ans[3] <= 5; ans[3]++)
for (ans[4] = 1; ans[4] <= 5; ans[4]++)
for (ans[5] = 1; ans[5] <= 5; ans[5]++)
for (ans[6] = 1; ans[6] <= 5; ans[6]++)
for (ans[7] = 1; ans[7] <= 5; ans[7]++)
for (ans[8] = 1; ans[8] <= 5; ans[8]++)
for (ans[9] = 1; ans[9] <= 5; ans[9]++)
for (ans[10] = 1; ans[10] <= 5; ans[10]++)
{
if (ans[ans[1] + 1] == 2)//Q1
if ((ans[ans[2] + 1] == ans[ans[2] + 2]) && overlap(ans))//Q2
if (SameAnswerAsNo3(ans))//Q3
if (ans[4] - 1 == numberOfAnswer(ans, 1))//Q4
if (ans[5] == ans[11 - ans[5]])//Q5
if (sameNumberAsAnswerA(ans) == ans[6] + 1)//Q6
if (abs(ans[7] - ans[8]) == 5 - ans[7])//Q7
if (ans[8] + 1 == numberOfAnswer(ans, 1) + numberOfAnswer(ans, 5))//Q8
if (ans[9] == fxxkTheNinth(numberOfAnswer(ans, 2) + numberOfAnswer(ans, 3) + numberOfAnswer(ans, 4)))
if (ans[10] == ans[10])
printArray(ans);
}
system("pause");
}
0.0第一次写这么深的循环,这么漂亮的if嵌套,写完还真有点小激动那o(^▽^)o
= =这排版毁了原本的美感- -就截个图吧
不能更美丽!233333333