7-2 樹種統計 (20 分)

  • 2019 年 11 月 7 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/shiliang97/article/details/102924532

7-2 樹種統計 (20 分)

隨著衛星成像技術的應用,自然資源研究機構可以識別每一棵樹的種類。請編寫程式幫助研究人員統計每種樹的數量,計算每種樹佔總數的百分比。

輸入格式:

輸入首先給出正整數N(≤10​5​​),隨後N行,每行給出衛星觀測到的一棵樹的種類名稱。種類名稱由不超過30個英文字母和空格組成(大小寫不區分)。

輸出格式:

按字典序遞增輸出各種樹的種類名稱及其所佔總數的百分比,其間以空格分隔,保留小數點後4位。

輸入樣例:

29  Red Alder  Ash  Aspen  Basswood  Ash  Beech  Yellow Birch  Ash  Cherry  Cottonwood  Ash  Cypress  Red Elm  Gum  Hackberry  White Oak  Hickory  Pecan  Hard Maple  White Oak  Soft Maple  Red Oak  Red Oak  White Oak  Poplan  Sassafras  Sycamore  Black Walnut  Willow

輸出樣例:

Ash 13.7931%  Aspen 3.4483%  Basswood 3.4483%  Beech 3.4483%  Black Walnut 3.4483%  Cherry 3.4483%  Cottonwood 3.4483%  Cypress 3.4483%  Gum 3.4483%  Hackberry 3.4483%  Hard Maple 3.4483%  Hickory 3.4483%  Pecan 3.4483%  Poplan 3.4483%  Red Alder 3.4483%  Red Elm 3.4483%  Red Oak 6.8966%  Sassafras 3.4483%  Soft Maple 3.4483%  Sycamore 3.4483%  White Oak 10.3448%  Willow 3.4483%  Yellow Birch 3.4483%

這道樹的題和樹一毛錢關係沒有。。。就是因為是統計樹所以出在在這個專題裡面了?

直接看這個改良版的程式碼吧~~~~

#include <iostream>  #include <cstdio>  #include <string>  #include <map>  using namespace std;  map<string,int> mp;  int main(){  	int n,i;  	cin>>n;  	string str;  	getchar();//!!!吃回車  	for(i=0;i<n;i++){  		getline(cin,str);//有空格讀一行,帶著回車一起讀          mp[str]++;  	}  	map<string,int>::iterator it=mp.begin();  	for(;it!=mp.end();it++){  		cout<<it->first<<" ";  		printf("%.4f%%n",it->second/(double)(n)*100);  	}  }

程式碼抄的。。。。不想寫

#include <iostream>  #include <cstdio>  #include <string>  #include <map>  using namespace std;  map<string,int> mp;  int main(){  	int n,i;  	cin>>n;  	string str;  	getchar();//!!!吃回車  	for(i=0;i<n;i++){  		getline(cin,str);//有空格讀一行,帶著回車一起讀  		// if(mp.find(str)==mp.end()){//學了一個新的但是用不上  		// 	mp[str]=1;//沒找到唄  		// }  		// else{  		// 	mp[str]++;  		// }          mp[str]++;  	}  	map<string,int>::iterator it=mp.begin();  	for(;it!=mp.end();it++){  		cout<<it->first<<" ";  		printf("%.4f%%n",it->second/(double)(n)*100);  	}  }