致初学者(三): HDU 2033~ 2043题解
下面继续给出2904628156的AC程序,供大家参考。2033~2043这10道题就被归结为“ACM程序设计期末考试(2006/06/07) ”和“2005实验班短学期考试 ”。
HDU 2033:人见人爱A+B
简单分支结构。
HDU 2034:人见人爱A-B
设用数组a,b,c分别表示集合A,B,C,其中 C=A-B。
用循环 for (i=0;i<n;i++) 处理集合A中的每个元素a[i],对于元素a[i] 用循环 for (j=0;j<m;j++) 在集合B中查找a[i]是否在集合B中存在,如果a[i]不在集合B中出现,则将a[i]保存到数组c中,作为集合C的一个元素。
得到数组c后,输出前采用冒泡排序按从小到大的顺序对数组c进行排序。
HDU 2035:人见人爱A^B
采用快速幂运算完成A^B的计算。
HDU 2036:改革春风吹满地
利用向量积(叉积)计算多边形的面积公式为:
对于此公式推导过程有兴趣的同学可以参阅网上的一篇博文“利用向量积(叉积)计算三角形的面积和多边形的面积”。
HDU 2037:今年暑假不AC
定义一个结构体
struct showtime
{
int begin;
int end;
};
用于保存电视节目的开始时间和结束时间。定义结构体数组show[101]保存输入的电视节目情况。
采用贪心法求解。将电视节目(即结构体数组show)按结束时间从小到大排列(若结束时间系统,则按开始时间从大到小)。
先设lastend=show[0].end,因为第1个元素的结束时间一定是最早的,然后从左到右遍历数组各元素,若当前元素的开始时间大于lastend,则可以看一个完整节目,计数,同时修改lastend使之等于当前元素的结束时间。直到数组全部元素遍历完。
HDU 2039:三角形
简单分支结构。输入三角形三条边后,若满足任意两边的和大于第3条边,则可以构成一个三角形。
HDU 2040:亲和数
抽象一个函数 int calcSum(int n)用于计算整数n的所有真因子之和。
HDU 2041:超级楼梯
设 f[i]表示上到第i级楼梯的方法数。显然上到第i级,可以在第i-1级楼梯跨1级到达;或者在第i-2级楼梯跨2级到达。
故有 f[i]=f[i-1]+f[i-2]。
HDU 2042:不容易系列之二
简单迭代处理。迭代初值num=3,迭代式为: num=2*(num-1); 。
HDU 2043:密码
简单字符串处理。