金字塔型杨辉三角、奇数阶魔方阵

其实这两道题蛮类似的,都是利用二维数组+循环即可。

杨辉三角:

编写一个程序,输入一个正整数 n(不超过 15),输出 n 行的金字塔型杨辉三角形。

#include<iostream>
using namespace std;
int a[20][20];
int main()
{
	int n;
	cin >> n;
	for (int i = 1; i <= n; ++i)
		a[i][1] = 1;
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 2; j <= i; ++j)
		{
			a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
		}
	}
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 0; j != n - i; ++j)
			cout << " ";
		for (int k = 1; k <= i; ++k)
			cout << a[i][k] << " ";
		cout << endl;
	}
	system("pause");
}

魔方阵

采用如下规则产生魔方阵: 
每次往左上角走一步。
由1开始填数,将1放在第0行的中间位置 
- 左上角超出上方边界,则在最下边相对应的位置填入下一个数字; 
- 左上角超出左边边界,则在最右边相对应的位置填入下一个数字; 
- 如果按上述方法找的的位置已经填入数据,则在同一列下一行填入下一个数字。
 

#include<iostream>
#include<iomanip>
using namespace std;
int a[11][11];
int main()
{
	int n;
	cin >> n;
	int row = 0;
	int col = n / 2;
	a[row][col] = 1;
	for (int i = 2; i <= n * n; ++i)
	{
		if ((row > 0 && row < n - 1) && col > 0 && a[row - 1][col - 1] > 0 && a[row - 1][col - 1] < i)
		{
			a[row + 1][col] = i;
			row = row + 1;
		}
		else if (row == 0 && col > 0)
		{
			a[n - 1][col - 1] = i;
			row = n - 1;
			col = col - 1;
		}
		else if (col == 0 && row > 0)
		{
			a[row - 1][n - 1] = i;
			row = row - 1;
			col = n - 1;
		}
		else if (row == 0 && col == 0)
		{
			a[1][0] = i;
			row = 1;
		}
		else
		{
			a[row - 1][col - 1] = i;
			row = row - 1;
			col = col - 1;
		}
	}
	for (int i = 0; i != n; ++i)
	{
		for (int j = 0; j != n; ++j)
			cout << setw(5) << a[i][j];
		cout << endl;
	}
	system("pause");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值