例三:猜凶手
题目具体要求如下
本题代码简单,但是呢思维巧妙,相信各位宝子看完代码就可以理解了
1. #include<stdio.h> 2. int main() 3. { 4. int killer = 0; 5. //分别假设凶手是a,b,c,d,看谁是凶手时满足3个人说了真话,一个人说了假话 6. for (killer = 'a'; killer <= 'd'; killer++) 7. { 8. if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3) 9. printf("凶手是:%c", killer); 10. }//只需要一个个遍历,满足这四个人中三个人的条件即可判断出来 11. return 0; 12. }
例四:杨辉三角
题目要求为
题目要求了解呢后,我们来了解一下什么叫杨辉三角吧
杨辉三角(也称帕斯卡三角)相信很多人都不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。
杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623—-1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
方法一
其实这道题主要是找到规律就好做了,一起来看看博主的代码吧
1. #include <stdio.h> 2. int main() 3. { 4. int n = 0; 5. int i = 0; 6. int arr[1000] = { 0 }; 7. scanf("%d", &n); 8. for (i = 1; i < n; i++) 9. { 10. arr[0] = 1; 11. int j = i-1; 12. int x = 0; 13. for (; j >0; j--) 14. { 15. arr[j] = arr[j - 1] + arr[j]; 16. } 17. for (x = 0; x <i; x++) 18. { 19. printf("%d ", arr[x]); 20. } 21. printf("\n"); 22. } 23. return 0; 24. }
画图解释如下
方法二
1. void yangHuiTriangle(int n) 2. { 3. int data[30][30] = { 1 }; //第一行直接填好,播下种子 4. 5. int i, j; 6. 7. for (i = 1; i < n; i++) //从第二行开始填 8. { 9. data[i][0] = 1; //每行的第一列都没有区别,直接给1,保证不会越界。 10. for (j = 1; j <= i; j++) //从第二列开始填 11. { 12. data[i][j] = data[i - 1][j] + data[i - 1][j - 1]; //递推方程 13. } 14. } 15. 16. for (i = 0; i < n; i++) //填完打印 17. { 18. for (j = 0; j <= i; j++) 19. { 20. printf("%d ", data[i][j]); 21. } 22. putchar('\n'); 23. } 24. }
以上是博主在学习中遇到的难题,在此分享做题经验,对于这些题目有其他见解的友友,欢迎评论去留言探讨。