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;
}
相关推荐
sz66cm33 分钟前
LeetCode刷题 -- 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现
leetcode·矩阵·深度优先
Code_流苏1 小时前
C++课设:智能优惠快餐点餐系统
开发语言·c++·课设·期末大作业·快餐点餐系统·智能优惠算法
越城1 小时前
深入解析C++引用:从别名机制到函数特性实践
c++
qwertyuiop_i2 小时前
pe文件结构(TLS)
c++·tls·pe文件结构
岁忧3 小时前
(nice!!!)(LeetCode每日一题)2434. 使用机器人打印字典序最小的字符串(贪心+栈)
java·c++·算法·leetcode·职场和发展·go
无敌的小笼包3 小时前
第四讲:类和对象(下)
数据结构·c++
鑫鑫向栄3 小时前
[蓝桥杯]解谜游戏
数据结构·c++·算法·职场和发展·蓝桥杯
fen_fen4 小时前
学习笔记(25):线性代数,矩阵-矩阵乘法原理
笔记·学习·线性代数
luofeiju4 小时前
矩阵QR分解
线性代数·算法
闻缺陷则喜何志丹4 小时前
【分治法 容斥原理 矩阵快速幂】P6692 出生点|普及+
c++·线性代数·数学·洛谷·容斥原理·分治法·矩阵快速幂