题目链接: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)))