蓝桥杯刷题_day2

DAY2

杨辉三角

【题目描述】
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:

   1
  1 1
 1 2 1
1 3 3 1

给出n,输出它的前n行。

【输入格式】
输入包含一个数n。

【输出格式】
输入杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

【输入样例】

4

【输出样例】

1  
1 1  
1 2 1  
1 3 3 1

【数据规模与约定】
1 <= n <= 34

【解题思路】
使用二维数组,先将每个一维数组的第一个数和最后一个数都设置为1,然后根据三角形中的每个数等于它两肩膀数字的和的特性进行计算。

【C++程序代码】
方法一:使用数组

#include<iostream>
#include<string>

using namespace std;

int main()
{
	int n;
	cin >> n;
	int arr[34][34] = { 0 };

	for (int i = 0; i < 34; i++)
	{
		arr[i][0] = arr[i][i] = 1;
	}

	for (int i = 2; i < 34; i++)
	{
		for (int j = 1; j < i; j++)
		{
			arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
		}
	}

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j <= i; j++)
		{
			cout << arr[i][j] << ' ';
		}
		cout << endl;
	}

	return 0;
}

方法二:使用vector容器

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	int n;
	cin >> n;
	vector<vector<int>> vv(n);

	for (int i = 0; i < n; i++)
	{
		vv[i].resize(i + 1, 1);
	}

	for (int i = 2; i < n; i++)
	{
		for (int j = 1; j < i; j++)
		{
			vv[i][j] = vv[i - 1][j - 1] + vv[i - 1][j];
		}
	}

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j <= i; j++)
		{
			cout << vv[i][j] << ' ';
		}
		cout << endl;
	}

	return 0;
}

查找整数

【题目描述】
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

【输入格式】
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。

【输出格式】
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

【输入样例】

6  
1 9 4 8 3 9  
9

【输出样例】

2

【数据规模与约定】
1 <= n <= 1000

【解题思路】
将数列的数字逐个输入进容器中,然后再逐个进行对比

【C++程序代码】

#include<iostream>
#include<vector>

using namespace std;

int main()
{
	int n;
	cin >> n;
	vector<int> v(n);

	for (int i = 0; i < n; i++)
	{
		int tmp;
		cin >> tmp;
		v[i] = tmp;
	}

	int findNum;
	cin >> findNum;
	int i;
	for (i = 0; i < n; i++)
	{
		if (v[i] == findNum)
		{
			break;
		}
	}
	if (i == n)
	{
		cout << -1;
	}
	else
	{
		cout << ++i;
	}
	cout << endl;
	return 0;
}

数列特征

【题目描述】
给出n个数,找出这n个数的最大值,最小值,和。

【输入格式】
第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

【输出格式】
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。

【输入样例】

5
1 3 -2 4 5

【输出样例】

5
-2
11

【数据规模与约定】
1 <= n <= 10000

【解题思路】
题目规定了输入的数字的绝对值都小于-10000,所有设最大值和最小值分别为正负10000,只要有大于或者小于的就进行替换。

【C++程序代码】

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	int n;
	cin >> n;
	vector<int> v(n);
	int sum = 0;
	int max = -10000;
	int min = 10000;
	for (int i = 0; i < n; i++)
	{
		cin >> v[i];
		sum += v[i];
		if (v[i] > max)
		{
			max = v[i];
		}
		if (v[i] < min)
		{
			min = v[i];
		}
	}

	cout << max << endl;
	cout << min << endl;
	cout << sum << endl;

	return 0;
}

字母图形(未通过全部样例)

【题目描述】
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

【输入格式】
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。

【输出格式】
输出n行,每个m个字符,为你的图形。

【输入样例】

5 7

【输出样例】

ABCDEFG  
BABCDEF  
CBABCDE  
DCBABCD  
EDCBABC

【数据规模与约定】
1 <= n <= 10000

【解题思路】
用一个容器先输入第一行的所有字符,通过观看样例输出我们可以得出结论,根据行号的变化,每次前n个字符+1,后m-n个字符+1。

【C++程序代码】

#include<iostream>
#include<vector>

using namespace std;

int main()
{
	int n, m;
	cin >> n >> m;
	vector<char> v(m);
	for (int i = 0; i < m; i++)
	{
		v[i] = 'A' + i;
	}

	for (int i = 0; i < n; i++)
	{
		if (i > 0)
		{
			for (int j = 0; j < i; j++)
			{
				v[j]++;
			}
			for (int j = i; j < m; j++)
			{
				v[j]--;
			}
		}
		for (int j = 0; j < m; j++)
		{
			cout << v[j] << " ";
		}
		cout << endl;
	}

	return 0;
}

相关推荐

  1. _day2

    2024-03-26 13:00:02       18 阅读
  2. day2日记

    2024-03-26 13:00:02       22 阅读
  3. _day3

    2024-03-26 13:00:02       17 阅读
  4. _day10

    2024-03-26 13:00:02       15 阅读
  5. --python-2

    2024-03-26 13:00:02       29 阅读
  6. day05——2023

    2024-03-26 13:00:02       34 阅读
  7. day4日记

    2024-03-26 13:00:02       20 阅读

最近更新

  1. 力学笃行(四)Qt 线程与信号槽

    2024-03-26 13:00:02       0 阅读
  2. 【C/C++】VSCode 插件支持

    2024-03-26 13:00:02       0 阅读
  3. 华为HCIP Datacom H12-821 卷32

    2024-03-26 13:00:02       0 阅读
  4. Zookeeper底层原理

    2024-03-26 13:00:02       0 阅读
  5. Vue 3与Pinia:下一代状态管理的探索

    2024-03-26 13:00:02       0 阅读

热门阅读

  1. 网络的warm up

    2024-03-26 13:00:02       21 阅读
  2. 教程2_视频入门

    2024-03-26 13:00:02       16 阅读
  3. c语言编程题目:水仙花数

    2024-03-26 13:00:02       21 阅读
  4. ADP论文学习-零和或非零和博弈问题

    2024-03-26 13:00:02       24 阅读
  5. C++语法|C++八股|内存泄漏杂谈

    2024-03-26 13:00:02       19 阅读
  6. 解析option设计模式

    2024-03-26 13:00:02       18 阅读
  7. 【设计模式】原型模式详解

    2024-03-26 13:00:02       19 阅读
  8. 富格林:正确析辨虚假受害陷阱

    2024-03-26 13:00:02       20 阅读