offer(一): 俄罗斯方块成功次数输出 C++实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39087263/article/details/84556993

题目链接:https://www.nowcoder.com/test/question/done?tid=20189002&qid=224352

题目描述:

小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。
荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先前的方块之上,当一整行方块都被占满时,这一行会被消去,并得到1分。
有一天,小易又开了一局游戏,当玩到第 m 个方块落下时他觉得太无聊就关掉了,小易希望你告诉他这局游戏他获得的分数。

思路:

    设定为N列,则

    定义一个1*N的数组,每一列落下方块时,对应数组位置+1,最后取数组的最小值

代码:

#include<iostream>
#include <string>
#include<vector>
#include<algorithm>
using namespace std;
int min(vector<int>vec)
{
	sort(vec.begin(),vec.end(),less<int>());
	return vec[0];
}
int main()
{
	int n;
	int m;
	while(cin>>n>>m)
	{
		vector<int>vec(n,0);
		for(int i=0;i<m;++i)
		{
			int input;
			cin>>input;
			vec[input-1]++;
		}
		cout<<min(vec)<<endl;
	}
	system("pause");
	return 0;
}

优秀代码欣赏:

链接:https://www.nowcoder.com/questionTerminal/9407e24a70b04fedba4ab3bd3ae29704
来源:牛客网

利用count和sort列表操作函数 n = int(input("input n:"))
m = int(input("input m:"))
c = []
while m > 0 :
    c.append(int(input("input c[]:")))
    m-=1
a = range(n)
d = []
for i in a :
    d.append(c.count(a[i]+1))
d.sort()
print(d[0])
链接:https://www.nowcoder.com/questionTerminal/9407e24a70b04fedba4ab3bd3ae29704
来源:牛客网

'''
思路: 送分题。创建一个长为n的list命名为record,遍历一遍A,
      将各个位置上加一,遍历结束后,最小值即为得分。
'''
  
# 读入数据
n,k =list(map(int, input().split()))
A =list(map(int, input().split())) # A = [a1,a2,a3,...an]
  
record =[0 for i in range(n)]
for i in A:
    record[i-1] +=1
print(int(min(record)))

猜你喜欢

转载自blog.csdn.net/weixin_39087263/article/details/84556993
今日推荐