NO.24十六届蓝桥杯备战|二维数组八道练习|杨辉三角|矩阵(C++)

P5732 【深基5.习7】杨辉三角 - 洛谷
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<vector<int>> a(n, vector<int> (n));
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            if (j == 0)
            {
                a[i][j] = 1;
            }
            if (j == i)
            {
                a[i][j] = 1;
            }
            if (i >= 2 && j >= 1)
                a[i][j] = a[i-1][j-1] + a[i-1][j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            cout << a[i][j] << ' ';
        }
        cout << '\n';
    }
    
    return 0;
}

合并成一次遍历

c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<vector<int>> a(n, vector<int> (n));
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            if (j == 0)
            {
                a[i][j] = 1;
            }
            if (j == i)
            {
                a[i][j] = 1;
            }
            if (i >= 2 && j >= 1)
                a[i][j] = a[i-1][j-1] + a[i-1][j];
            cout << a[i][j] << ' ';
        }
        cout << '\n';
    }

    return 0;
}
B2099 矩阵交换行 - 洛谷
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    vector<vector<int>> a(5, vector<int>(5));
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cin >> a[i][j];
        }
    }
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < 5; i++)
    {
        int tmp = a[n-1][i];
        a[n-1][i] = a[m-1][i];
        a[m-1][i] = tmp;
    }
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cout << a[i][j] << ' ';
        }
        cout << endl;
    }
    
    return 0;
}
B2103 图像相似度 - 洛谷
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int m, n;
    cin >> m >> n;
    vector<vector<int>> a(m, vector<int>(n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];        
        }
    }
    vector<vector<int>> b(m, vector<int>(n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> b[i][j];        
        }
    }
    int cnt = 0;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if(a[i][j] == b[i][j])
                cnt++;
        }
    }
    printf("%.2f", cnt * 100.0 / m / n);
    
    return 0;
}
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int m, n;
    cin >> m >> n;
    vector<vector<int>> a(m, vector<int>(n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];        
        }
    }
	int t = 0;
	int cnt = 0;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> t;
            if (t == a[i][j])
	            cnt++;
        }
    }
    
    printf("%.2f", cnt * 100.0 / m / n);
    
    return 0;
}
B2104 矩阵加法 - 洛谷
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int m, n;
    cin >> m >> n;
    vector<vector<int>> a(m, vector<int>(n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];        
        }
    }
    vector<vector<int>> b(m, vector<int>(n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> b[i][j];        
        }
    }
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] += b[i][j];
            cout << a[i][j] << ' ';
        }
        cout << endl;
    }

    return 0;
}
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int m, n;
    cin >> m >> n;
    vector<vector<int>> a(m, vector<int>(n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];        
        }
    }
    int t = 0;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> t;
            cout << a[i][j] + t << ' ';        
        }
        cout << endl;
    }

    return 0;
}
B2106 矩阵转置 - 洛谷
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int m, n;
    cin >> m >> n;
    vector<vector<int>> a(m, vector<int>(n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];        
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m ; j++)
        {
            cout << a[j][i] << ' ';
        }
        cout << endl;
    }

    return 0;
}
B2101 计算矩阵边缘元素之和 - 洛谷
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int m, n;
    cin >> m >> n;
    vector<vector<int>> a(m, vector<int> (n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];        
        }
    }
    int sum = 0;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i == 0 || i == m-1)
                sum += a[i][j];
            else if (j == 0 || j == n - 1)
                sum += a[i][j];
        }
    }
    cout << sum << endl;
    
    return 0;
}
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int m, n;
    cin >> m >> n;
    vector<vector<int>> a(m, vector<int> (n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];        
        }
    }
    int sum = 0;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i == 0 || i == m-1 || j == 0 || j == n - 1)
                sum += a[i][j];
        }
    }
    cout << sum << endl;
    
    return 0;
}
c++ 复制代码
#include <iostream>  
using namespace std;  

int main()  
{  
	int m, n;  
	cin >> m >> n;  
	int sum = 0;  
	int i = 0;  
	int j = 0;  
	int x = 0;  
	for (i = 0; i < m; i++)  
	{  
		for (j = 0; j < n; j++)
		{  
			cin >> x;  
			if (i == 0 || i == m - 1 || j == 0 || j == n - 1)  
				sum += x;  
		}  
	}  
	cout << sum << endl;  
	
	return 0;  
}

代码在遍历数组的过程中判断属于边缘的元素,仅对数组中的每个元素遍历了⼀遍,是不会存在重复统计的问题的。

B2108 图像模糊处理 - 洛谷
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int m, n;
    cin >> m >> n;
    vector<vector<int>> a(m, vector<int> (n));
    vector<vector<int>> b(m, vector<int> (n));
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];
            b[i][j] = a[i][j];
        }
    }
    for (int i = 1; i < m - 1; i++)
    {
        for (int j = 1; j < n - 1; j++)
        {
            b[i][j] = (a[i-1][j] + a[i][j-1] + a[i+1][j] + a[i][j+1] + a[i][j]) / 5.0 + 0.5;
        }
    }
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << b[i][j] << " ";
        }
        cout << endl;
    }
    
    return 0;
}

对于浮点数,舍⼊到最接近的整数是什么意思呢?

⽐如:

4.3舍⼊成4

4.65舍⼊成5

这种情况可以使⽤+0.5后强制类型转换成int类型的值处理。

float f = 4.65;

int n = (int)(f+0.5);

P2550 [AHOI2001] 彩票摇奖 - 洛谷
c++ 复制代码
#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> v(7);
    for (auto &x : v)
    {
        cin >> x;        
    }
    vector<vector<int>> a(n, vector<int> (7));
    vector<int> r(7);
    for (int i = 0; i < n; i++)
    {
        int cnt = 0;
        for (int j = 0; j < 7; j++)
        {
            cin >> a[i][j];
            for (int k = 0; k < 7; k++)
                if (a[i][j] == v[k])
                    cnt++;
        }
		r[7-cnt]++;
    }
    for (auto x : r)
    {
        cout << x << ' ';        
    }
    cout << endl;

    return 0;
}
相关推荐
ll7788113 小时前
C++学习之路,从0到精通的征途:继承
开发语言·数据结构·c++·学习·算法
我不想当小卡拉米3 小时前
【Linux】操作系统入门:冯诺依曼体系结构
linux·开发语言·网络·c++
引量AI3 小时前
TikTok矩阵运营干货:从0到1打造爆款矩阵
人工智能·矩阵·自动化·tiktok矩阵·海外社媒
炎芯随笔3 小时前
【C++】【设计模式】生产者-消费者模型
开发语言·c++·设计模式
乌鸦9444 小时前
《类和对象(下)》
开发语言·c++·类和对象+
逐光沧海4 小时前
数据结构基础--蓝桥杯备考
数据结构·c++·算法·蓝桥杯
前进的程序员4 小时前
嵌入式开发中 C++ 跨平台开发经验与解决方案
开发语言·c++
菜一头包5 小时前
c++ std库中的文件操作学习笔记
c++·笔记·学习
吃个早饭7 小时前
2025年第十六届蓝桥杯大赛软件赛C/C++大学B组题解
c语言·c++·蓝桥杯
fancy1661667 小时前
力扣top100 矩阵置零
人工智能·算法·矩阵