欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-29 21:00:28
2019届网易互联网校招笔试-编程题 1. 古老的俄罗斯方块游戏机。 题目:自定义俄罗斯方块列数,每次俄罗斯方块下落个数为1*1,当一行都落满俄罗斯方块时,得分+1。现在小明玩到m个俄罗斯方块,求此时的分数。 输入: 第一行 列数 俄罗斯方块个数m 第二行 a(1) a(2) a(3) ...a(i ......

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 }