1. 程式人生 > >offer(一): 俄羅斯方塊成功次數輸出 C++實現

offer(一): 俄羅斯方塊成功次數輸出 C++實現

題目連結: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)))