杨辉三角及一些现实问题的求解

1.杨辉三角问题

#include <stdio.h>
#include <stdlib.h>

const int length = 10;  // 确定杨辉三角的高度 

int main()
{
    int nums[length][length];
    int i, j;
    //计算 
    for(i=0; i<length; i++)
    {
        nums[i][0] = 1;   //每行首尾为零    
        nums[i][i] = 1;
        for(j=1; j<i; j++)  //每行需要计算的数只有N-2个 
            nums[i][j] = nums[i-1][j-1] +   \
            nums[i-1][j];                 //每行中间的数等于上一行\
                                          左右右两个数之和 
    }

   //打印 
    for(i=0; i<length; i++)
    {
        for(j=0; j<length-i-1; j++)
            printf("   ");
        for(j=0; j<=i; j++)
            printf("%-5d ", nums[i][j]);
        putchar('\n');
    }
    return 0;
}

2.五名运动员跳水问题

#include <stdio.h>  
int main()  
{  
    int a = 0;  
    int b = 0;  
    int c = 0;  
    int d = 0;  
    int e = 0;  
    int n = 0;  
    int flag = 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==1)+(a==3)==1)     //每个人的话只有半句是真的 
                         &&((b==2)+(e==4)==1)  
                         &&((c==1)+(d==2)==1)  
                         &&((c==5)+(d==3)==1)  
                         &&((e==4)+(a==1)==1))  
                        {  
                            //flag = 0;  
                            n |= (1<<(a-1));  
                            n |= (1<<(b-1));  // 左移一位与0按位或 
                            n |= (1<<(c-1));  
                            n |= (1<<(d-1));  
                            n |= (1<<(e-1));  
                            if(n==1||n==3||n==7||n==15||n==31)  
                                printf("a = %d b = %d c = %d d = %d e = %d\n",a,b,c,d,e);  
                            n=0;  
                        }  

                    }  

                }  
            }  
        }  
    }  
    return 0;  
} 

3.谁是嫌疑犯

#include<stdio.h>  
int main()  
{  
int killer=0;  
for (killer = 'A'; killer <= 'D'; killer++)     //凶手在A,B,C,D中 
{  
if ((killer != 'A') + (killer == 'C') + (killer =='D') + (killer != 'D') == 3)   
                                               //满足三真一假的killer为真正凶手 
{  
printf("killer=%c\n", killer);        //输出凶手的字母 
return 0;  
}  
}  
return 1;  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值