跳转至

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: 暂无

思路:

暂无

代码:

1
暂无

第 4 题 网络延时(暂无)

题目链接: 网络延时

TAG: 暂无

思路:

暂无

代码:

1
暂无

第 5 题 最小花费(暂无)

题目链接: 最小花费

TAG: 暂无

思路:

暂无

代码:

1
暂无

最后更新: 2022-12-19 10:18:04

评论