打印杨辉三角 猜凶手 猜名次

//初始化一个二维数组,用二维数组来保存杨辉三角的数值
//首先创建一个数组,暂定数组为10*10
// 初始化一下数组,我们都知道杨辉三角的腰都为1,
// 并且每一行的个数都是以1递增的个数
// 最重要的一点就是,杨辉三角的每一个数,刚好等于前一行的前两个数的和
// 这是我们这个代码的规律所在
// 利用for有规律的初始化为一
//1 0 0 0 0 0 0 0 0 0
//1 1 0 0 0 0 0 0 0 0
//1 0 1 0 0 0 0 0 0 0
//1 0 0 1 0 0 0 0 0 0 
//1 0 0 0 1 0 0 0 0 0
//1 0 0 0 0 1 0 0 0 0
//1 0 0 0 0 0 1 0 0 0
//1 0 0 0 0 0 0 1 0 0
//1 0 0 0 0 0 0 0 1 0
//1 0 0 0 0 0 0 0 0 1

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define Num 10//如果想要打印更多的杨辉三角,只需要修改这个数值即可,比较方便

int main()
{
	int i, j, k, arr[Num][Num] ={0};//需要先初始化二维数组为0
	arr[0][0] = 1;//首先把第一行 第一个数初始化为1
	for (i=1 ; i < Num; i++)//由于第一行已经初始化了,这里循环从第二行开始
	{
		arr[i][0] =  1;
		arr[i][i] = 1;
	}
	for (i = 2; i < Num; i++)//杨辉三角是从第三行才开始相加
	{
	//由于杨辉三角的每一行的个数都是递增的,所以根据i的大小来提前让循环结束
		for (j = 1; j < i; j++)
		{
			arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			//杨辉三角的每一个数刚好等于这个数的上一行的前两个数相加
		}
	}
	for (i = 0; i < Num; i++)
	{
		for (k = 1; k <Num-i; k++)//这里为了美观一点,在打印前先打印一些空格,虽然也没美观多少
		{
			printf(" ");
		}
		//这里我们只需要打印我们想要的数就可以
		//刚好每一行的j<=i的范围是我们要打印的数
		for (j = 0; j <=i; j++)
		{
			//%4d就表示数据宽度为4,不够的那空格来补
			//如果超出四位,则应该原型输出。
			printf("%4d", arr[i][j]);
		}
		printf("
");
	}
	return 0;
}



//日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
//以下为4个嫌疑犯的供词:
//A说:不是我。
//B说:是C。
//C说:是D。
//D说:C在胡说
//已知3个人说了真话,1个人说的是假话。
//现在请根据这些信息,写一个程序来确定到底谁是凶手。


//这里我们暴力求解,由于可能性不多,把所有可能性罗列出来,最后用一个if来判断答案


//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	int d = 0;
//	char k='A';//代表凶手
//	for (k; k <= 'D'; k++)
//	{
//		if (3 == (k != 'A') + (k == 'C') + (k == 'D') + (k != 'D'))
//		{
//			printf("凶手是%c", k);
//		}
//	}
//	return 0;
//}

//这里我们暴力求解,由于可能性不多,把所有可能性罗列出来,最后用一个if来判断答案

//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	int d = 0;
//	int e = 0;
//	for (a = 1; a <= 5; a++)
//	{
//		for (b = 1; b <= 5; b++)
//		{
//			for (c = 1; c <= 5; c++)
//			{
//				for (d = 1; d <= 5; d++)
//				{
//					for (e = 1; e <= 5; e++)
//					{
//						if (((b == 2) + (a == 3)) && ((b == 2) + (e == 4)) &&
//							((c == 1) + (d == 2))&&((d == 3) + (c == 5) &&
//								((e == 4) + (a == 1))&&(a!=b)&&(a!=c)&&
//								(a!=d)&&(a!=e)&&(b!=c)&&(b!=d)&&(b!=e)&&
//								(c!=d)&&(c!=e)&&(d!=e)))
//						{
//							printf("a排名%d b排名%d c排名%d d排名%d e排名%d
"
//							,a,b,c,d,e);
//						}
//					}
//				}
//			}
//		}
//	}
//	return 0;
//}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值