网易游戏游戏开发工程师笔试试题

1.一次考试,有25人参加,有ABC三题,每人至少会做一题,在不会做A的人中,会做B的人是会做C的人的两倍,在会做A的人中,只会做A的人比其他的少一人,不会做A的人和只会做A的人数相等,问只会做B的有几人?


解:设绿色加白色为X  紫色加白色为X/2   白色为Z   红色为Y   蓝色为Y+1
所以由条件可得X+0.5X-Z+2Y+1=25     X+0.5X-Z=Y  故3X=16+2Z 当且仅当Z=4,X=8时为整数解,故题目答案为X-Z=4人或以下三组解: Z=1,X=6;  Z=7,X=10;   Z=10,X=12;

2.李氏夫妇请4对夫妇来家吃饭,已知每人不和自己和配偶握手,每人至少握手一次,不重复和人握手,李先生最后一问每人握手次数都不一样,问李太太握手几次...
解:既然每人次数不同,就说明有1到8八种次数,每人一种.
初始:87  65  43  21  (00)  括号内为李氏夫妇的次数
    从8看起,那个人肯定和另外的8人握手,否则没有8次,而且他的配偶肯定是7次,否则不可能有8次握手的人.(X表示已计算的握手)
第一次:X7  54  32  10  (11)
第二次:XX  43  21  00  (22)
第三次:XX  X3  10  00  (33)
第四次:XX  XX  00  00  (44)
所以李先生和李太太都握手了4次.


**** Hidden Message *****
#include <iostream>
#include <string>
using namespace std;

void PrintPostOrder(const string & preorder, const string & inorder, int start1, int start2, int size){
if(size == 1)
{
  cout << preorder;
  return;
}
if(size == 0)
  return;

int i = inorder.find(preorder);
PrintPostOrder(preorder, inorder, start1+1, start2, i-start2);
PrintPostOrder(preorder, inorder, start1+1+i-start2, start2+1+i-start2, size-i+start2-1);
cout << preorder;
}

int main(void)
{
string preorder, inorder;

while(cin >> preorder >> inorder)
{
  PrintPostOrder(preorder, inorder, 0, 0, preorder.size());
  cout << endl;
}
}

你可能感兴趣的:(网易)