日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7-37 模拟EXCEL排序 (25 分)(思路+详解+超时解决 兄弟们冲呀呀呀呀呀呀)

發布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7-37 模拟EXCEL排序 (25 分)(思路+详解+超时解决 兄弟们冲呀呀呀呀呀呀) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:題目

Excel可以對一組紀錄按任意指定列排序。現請編寫程序實現類似功能。

輸入格式:
輸入的第一行包含兩個正整數N(≤10
5
) 和C,其中N是紀錄的條數,C是指定排序的列號。之后有 N行,每行包含一條學生紀錄。每條學生紀錄由學號(6位數字,保證沒有重復的學號)、姓名(不超過8位且不包含空格的字符串)、成績([0, 100]內的整數)組成,相鄰屬性用1個空格隔開。

輸出格式:
在N行中輸出按要求排序后的結果,即:當C=1時,按學號遞增排序;當C=2時,按姓名的非遞減字典序排序;當C=3時,按成績的非遞減排序。當若干學生具有相同姓名或者相同成績時,則按他們的學號遞增排序。

輸入樣例:

3 1 000007 James 85 000010 Amy 90 000001 Zoe 60

輸出樣例:

000001 Zoe 60 000007 James 85 000010 Amy 90

二:思路

這個題是用結構體存儲 學號 姓名 成績 三個變量,然后重寫sort函數。

三:上碼

/**思路:利用結構體存下,學號,姓名,成績 ;然后重寫sort函數*/#include<bits/stdc++.h> using namespace std;struct Node{string id;string name;int grade; };bool sort_id( Node a,Node b ){return a.id < b.id;}bool sort_name( Node a, Node b ){if( a.name == b.name ) //當名字相同時,按照id進行排序 return a.id < b.id;return a.name < b.name; }bool sort_grade( Node a, Node b ){if( a.grade == b.grade)//當成績相同時,按照id進行排序 return a.id < b.id; return a.grade < b.grade; } int main(){int N,M;cin >> N >> M;//創建結構體數組Node *node = new Node[N]; for( int i = 0; i < N; i++ ){cin >> node[i].id >> node[i].name >> node[i].grade;}if( M == 1)sort(node,node+N,sort_id);if( M == 2)sort(node,node+N,sort_name);if( M == 3)sort(node,node+N,sort_grade);for( int i = 0; i < N; i++ ){cout << node[i].id << ' ' << node[i].name << ' ' << node[i].grade << endl;} }

補充超時解決:

1.這個需要卡時間,多提交幾次就還可以卡過去。2.或則將cout cin 改成printf 和 scanf這些都是我的做題經驗,親試有效,但如果還不行,那就回爐重造。重新構思路,重新編碼,一旦你寫出來,再怎么改還是原來的套路,很可能還是過不去。

四:總結和踩過的坑

這個題思路是我第一次這么寫,很明顯,不是我想出來的,我是學習大佬的。但是我還是自己做了遍,用的是map容器,其時用map是不對的,因為我一看題是排序,然后就沒仔細讀題,看了下輸出和輸入就寫碼了,結果很顯然,有3個點是過不去的,因為這個題還說會出現重復的名字和成績,在map容器當中他的鍵值是不允許重復的,一旦重復,就會發生覆蓋。然后我就上網學習大佬的,果然有收獲,這種做法,是真的牛逼。哈哈哈哈哈哈哈學到了哈哈哈。

五:記錄失敗的思考結果

這是我用map做的,有3個點是過不去的。而且是無法修復的,僅此記錄一下。

#include<bits/stdc++.h> using namespace std;int main(){int N,M;map<string,string>m1,m2;map<string,string>:: iterator t;cin >> N >> M;for( int i = 0; i < N; i++ ){string a,b,c;cin >> a >> b >> c;if(M == 1){m1[a] = b;m2[a] = c;}if(M == 2){m1[b] = a;m2[b] = c;}if(M == 3){m1[c] = a;m2[c] = b;}} if( M == 1){for( t = m1.begin(); t != m1.end(); t++ ){cout << t->first << ' ' << t->second <<' '<< m2[t->first] << endl;}}if( M == 2){for( t = m1.begin(); t != m1.end(); t++ ){cout << t->second << ' ' << t->first <<' '<< m2[t->first] << endl;}} if( M == 3 ){for( t = m1.begin(); t != m1.end(); t++ ){cout << t->second << ' ' << m2[t->first] <<' '<< t->first << endl;}} }//3 3 //000007 James 85 //000010 Amy 90 //000001 Zoe 60

加油boy! 越努力越幸運!我要敷面膜去了,男孩子也要護膚,也要香香的美美的!

總結

以上是生活随笔為你收集整理的7-37 模拟EXCEL排序 (25 分)(思路+详解+超时解决 兄弟们冲呀呀呀呀呀呀)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。