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;
}
相关推荐
彩妙不是菜喵1 分钟前
C++:类与对象
开发语言·c++
Yu_Lijing4 分钟前
基于C++的《Head First设计模式》笔记——抽象工厂模式
c++·笔记·设计模式
寻星探路9 分钟前
【Python 全栈测开之路】Python 基础语法精讲(三):函数、容器类型与文件处理
java·开发语言·c++·人工智能·python·ai·c#
txinyu的博客9 分钟前
函数的可重入性决定了函数的线程安全?volatile被认为是可重入关键字?
c++
无限进步_10 分钟前
【C语言&数据结构】相同的树:深入理解二叉树的结构与值比较
c语言·开发语言·数据结构·c++·算法·github·visual studio
枫叶丹415 分钟前
【Qt开发】Qt系统(五)-> Qt 多线程
c语言·开发语言·c++·qt
Larry_Yanan20 分钟前
Qt多进程(九)命名管道FIFO
开发语言·c++·qt·学习·ui
聆风吟º21 分钟前
【C++藏宝阁】C++入门:命名空间(namespace)详解
开发语言·c++·namespace·命名空间
优雅的潮叭23 分钟前
c++ 学习笔记之 模板元编程
c++·笔记·学习
飞鹰5126 分钟前
CUDA入门:从Hello World到矩阵运算 - Week 1学习总结
c++·人工智能·性能优化·ai编程·gpu算力