【程序29】 题目:求一个n*n矩阵对角线元素之和 1.程序分析:利用for循环控制将a[i][i]和a[i][length-1-i]累加后输出。但注意,如果length为奇数,对角线交叉的中心元素会被重复计算。 【程序33】 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析:使用一个二维数组来保存结果,结果如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 【程序24】 题目:给一个不多于5位的非负整数,要求:一、求它是几位数,二、逆序打印出各位数字。 【程序28】题目:对n给数的数组进行排序 1.程序分析:可以使用选择排序法或者冒泡排序法。 【程序30】 题目:有一个已经排好序的数组。现输入一个数,要求找出它应该被插入到第几个数之后。 1. 程序分析: 首先分析题目是否表述清晰。比如,如果数字小于数组中所有的数,应该如何输出?(这里暂定,需要插入在第1个数之前,则输出0;其他时候,如果应该被插入到第i个数之后,则输出i)。 数组是升序还是降序?(这里规定为升序)。 如果数组中没有任何数字,即为空数组,那么应该输出什么?(此处规定,同样输出0)。 另外一个值得询问清楚的问题是,数组中是否有重复数字,如果规定没有重复数字,则可能不需要去注意一些边界条件。(此处规定,可能有重复数字)。 最后,如果数字相同,是否应该插入在相同的数字之后?(此处规定,如果数字相同,则插入在最后一个相同的数字之后)。 这属于直接从头到尾找一遍的解法,属于暴力破解(Brute Force)。其实,因为数组是已经排好序的,我们可以用更短的时间完成,即为二分法查找,Binary Search:
0 Comments
Leave a Reply. |
更多有趣的文章档案库
November 2018
分类 |