2019届网易游戏校招-测试开发工程师编程题-C++

2018-08-13 07:35:43来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

2019届网易互联网校招笔试-编程题

1. 古老的俄罗斯方块游戏机。

题目:自定义俄罗斯方块列数,每次俄罗斯方块下落个数为1*1,当一行都落满俄罗斯方块时,得分+1。现在小明玩到m个俄罗斯方块,求此时的分数。

输入:

第一行  列数  俄罗斯方块个数m

第二行  a(1) a(2) a(3) ...a(i)...a(m)  表示第i个俄罗斯方块落在第a(i)行

输出:分数

例:输入

3 9

1 1 2 2 2 3 1 2 3

输出:2

思路:统计数组中每一行的数字重复的次数c,得分为c/列数n。

 1 #include <iostream>
 2 #include <string>
 3 #include <stdio.h>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     int a[2];
10     for(int i=0;i<2;i++) cin>>a[i];
11     char b[1000];
12     for(int j=0;j<a[1];j++)
13     {
14         cin>>b[j];
15     }
16     int c=0;
17     for(int i=0;i<sizeof(b);i++)
18     {
19         int n=b[0];
20         for(int j=i+1;j<sizeof(b);j++)
21         {
22             if(n==b[j]) c+=1;
23         }
24     }
25 
26     if(c<a[0]) cout<<0<<endl;
27     else cout<<c/a[0]<<endl;
28     //else cout<<1<<endl;
29     return 0;
30
31 }

2. 一节课总有m分钟,小明有的时间在睡觉,且每一分钟听课的兴趣权值不一样,同桌叫醒小明一次,可持续n分钟听课。现给定每一分钟的小明听课兴趣权值,与此时原来是否在睡觉,求同桌叫醒小明一次,小明清醒后总听课效率最高(=每分钟兴趣权值*每分钟)是多少?

输入:

第一行  一节课总时间m  叫醒听课时间

第二行  a(1) a(2) a(3) ...a(i)...a(m)  a(i)表示第i个分钟内听课的兴趣权值

第三行  b(1) b(2) b(3) ...b(i)...b(m)  b(i)=0或1,第i分钟内原来是否在睡觉,1为清醒,0为睡觉

输出:总听课效率

例:输入

6 3

1 3 5 2 5 4

1 1 0 1 0 0

输出:16

思路:输入m列,n分钟。关键在于求出第几分钟叫醒小明。求出n个相邻的每分钟感兴趣权值*清醒状态的最小值,即为可以叫醒小明的时间。

 

 1 #include <iostream>
 2 #include <string>
 3 #include <stdio.h>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     int a[2];
10     for(int i=0;i<2;i++) cin>>a[i];
11     int b[1000];
12     for(int j=0;j<a[0];j++) cin>>b[j]; //每分钟的权值
13     int c[1000];
14     for(int j=0;j<a[0];j++) cin>>c[j]; //1为清醒
15     int m[a[0]-a[1]+1];                //用来存储相邻的m个数的b*c的最小值,即可用来使c=1的m目标数
16     for(int i=0;i<a[0]-a[1]+1;i++)
17     {
18         for(int j=1;j<a[1];j++)
19         {
20             m[i]=b[i]*c[i];
21             m[i]+=b[j]*c[j];
22         }
23     }
24     int number,max=0;
25     for(int i=0;i<(a[0]-a[1]+1);i++)
26     {
27         int min=m[0];
28         if(min>m[i]) number=i;        //求出应该在第number分钟使c=1
29     }
30     for(int j=0;j<number+a[1];j++) max+=b[j]; 
31     cout<<max<<endl;
32     return 0;
33 }

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Qt动态链接库的创建和使用

下一篇:题解 P1435 【回文字串】