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 }
上一篇: maya怎么拆分物体UV?