那个网站报道过鸟巢建设,怎么破解网站后台,建设工程交流网站,市场调研一般怎么做说明#xff1a; 博主为了提早预习数据结构和C的一些知识#xff0c;自己琢磨外加查阅资料所写的代码#xff0c;题目来源于22年初的学院老师组织的算法基础公选课的练习。我的代码甚至思路肯定存在许多不足和错误#xff0c;欢迎大家批评指正。
题目列表#xff1a; 问题…说明 博主为了提早预习数据结构和C的一些知识自己琢磨外加查阅资料所写的代码题目来源于22年初的学院老师组织的算法基础公选课的练习。我的代码甚至思路肯定存在许多不足和错误欢迎大家批评指正。
题目列表 问题 A: 数据排序——统计数字 思路 开一个mapint,int的map键对应出现的数字值对应键的值出现的次数一旦出现一个数则把该数的出现次数加1最后遍历输出即可。值得注意的是map默认是从小到大排列的如果是string类型那么默认是按字典序从小到大排列的这跟它内部的实现有关。
参考题解
#include bits/stdc.h
#define endl \n
using namespace std;
mapint,int mp;
void solve(){int n;cin n;int num;while(n--){cin num;mp[num];}for(auto it:mp) cout it.first it.second endl;
}
signed main(){//问题 A: 数据排序——统计数字ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int _ 1;
// cin _;while (_--){solve();}return 0;
}问题 B: c和stl入门——数单词 思路 同理开一个mapstring,int的map键对应出现的单词值对应该单词出现的次数一旦出现一个单词则把该单词的出现次数加1最后遍历输出即可。
参考题解
#include bits/stdc.h
#define endl \n
using namespace std;
mapstring,int mp;
void solve(){int n;cin n;string s;while(n--){cin s;mp[s];}int maxn0;string maxs;for(auto it:mp){if(it.secondmaxn){maxn it.second;maxs it.first;}}cout maxs endl;
}
signed main(){//问题 B: c和stl入门——数单词ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int _ 1;
// cin _;while (_--){solve();}return 0;
}问题 C: 数据排序——众数 思路 与A题思路相同只不过输出的时候只输出出现次数最多的数可能不止1个和出现次数。
参考题解
#include bits/stdc.h
#define endl \n
using namespace std;
using ll long long;
mapint,int mp;
void solve(){int n;cin n;int num;while(n--){cin num;mp[num];}int maxn0;for(auto it:mp) if(it.secondmaxn) maxnit.second;for(auto it:mp) if(maxnit.second) cout it.first it.second endl;
}
int main(){//问题 C: 数据排序——众数ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int T1;
// cin T;while(T--) solve();return 0;
}
问题 D: 不重复地输出数 思路 其实这个题用set做更合适、直观一些但是放在map的习题里面那我们就用map做吧。同理出现过的数字就输出出现多次的只输出一次即可。
参考题解
#include bits/stdc.h
#define endl \n
using namespace std;
mapint,int mp;
void solve(){int n;cin n;int num;while(n--){cin num;mp[num];}for(auto it:mp) cout it.first ;cout endl;
}
signed main(){//问题 D: 不重复地输出数ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int _ 1;
// cin _;while (_--){solve();}return 0;
}问题 E: 最高分数的学生姓名 思路 开一个mapstring,int键存放学生的名字值存放其的成绩然后遍历map名字打擂台查找最高分然后再遍历一遍map输出最高分的名字。
参考题解
#include bits/stdc.h
#define endl \n
using namespace std;
mapstring,int mp;
void solve(){int n,score;cin n;string name;while(n--){cin score name;mp[name] score;}int maxscore 0;for(auto it:mp) if(it.secondmaxscore) maxscore it.second;for(auto it:mp) if(it.secondmaxscore) cout it.first endl;
}
signed main(){//问题 E: 最高分数的学生姓名ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int _ 1;
// cin _;while (_--){solve();}return 0;
}问题 F: 水果 思路 这题好在我在期末考前刷到过但是当时没学map没写出来期末考的时候用结构体数组加sort()函数写出来了现在回过头看看这个题用map来写是真的很简单。map根据字符串按字典序从小到大排序的特点我们无需对内部数据再进行排序了直接读入然后遍历输出即可。
参考题解
#include bits/stdc.h
#define endl \n
using namespace std;
mapstring,mapstring,int mp;
void solve(){int n,num;cin n;string fruit,province;mp.clear();while(n--){cin fruit province num;mp[province][fruit] num;}for(auto it1:mp){cout it1.first endl;for(auto it2:it1.second) cout |---- it2.first ( it2.second ) endl;}cout endl;
}
signed main(){//1332: 水果ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int _ 1;cin _;while (_--){solve();}return 0;
}