201503第4次
视频题解(暂无)
暂无
第 1 题 图像旋转
题目链接: 图像旋转
TAG: 模拟
思路:
观察可得,旋转后的图像相当于原数组从右往左,从上往下输出的结果,因此直接输出即可。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 | #include<bits/stdc++.h>
using namespace std;
const int N=1010;
int a[N][N];
int main(){
int n,m;
cin>>n>>m;
// 输入数据
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
// 从右往左,从上往下依次输出每一列的数据
for(int j=m;j>=1;j--){
for(int i=1;i<=n;i++){
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
|
第 2 题 数字排序
题目链接: 数字排序
TAG: STL
排序
思路:
使用结构体存数字和出现的次数,然后自定义结构体排序函数,使用STL自带的sort()函数即可快速实现排序操作。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 | #include<bits/stdc++.h>
using namespace std;
const int N=1010;
int a[N]; // a[i]表示i出现的次数
struct Node{
int num,cnt; // 分别表示数字和对应的出现次数
};
// 自定义排序规则
bool cmp(const Node &a,const Node &b){
if(a.cnt!=b.cnt)return a.cnt>b.cnt; // 如果出现次数不同,把次数多的排在前面
return a.num<b.num; // 否则把数字小的排在前面
}
int main(){
int n;
cin>>n;
while(n--){
int t;
cin>>t;
a[t]++;
}
vector<Node> p;
for(int i=0;i<=1000;i++){
if(a[i]){
p.push_back({i,a[i]}); // 将之前记录的数据放入vector中
}
}
sort(p.begin(),p.end(),cmp);
for(auto &e:p){
cout<<e.num<<" "<<e.cnt<<"\n";
}
return 0;
}
|
第 3 题 节日(暂无)
题目链接: 节日
TAG: 暂无
思路:
暂无
代码:
第 4 题 网络延时(暂无)
题目链接: 网络延时
TAG: 暂无
思路:
暂无
代码:
第 5 题 最小花费(暂无)
题目链接: 最小花费
TAG: 暂无
思路:
暂无
代码: