CSDN第57期编程竞赛活动经验

好难好难,逻辑应该是对的,但都超时了,通过控制数量,才勉强有测试用例通过

题目1、凑数

给定一组n个正整数,要求每次选其中一个数乘以或除以一个素数(称为一次凑数),问至少需要凑数多少次可以把所有的数都凑成相等。

思路,求这n个数的最小公倍数,再依次求每个数跟最小公倍数的商。将其因式分解统计数量求和。
数量少没问题,数量多就超时了
事后想想,应该搞个变量存储数量结果,就可以减少重复运算次数了。
30先分解了,60分解成2*30,这个30的分解过程就可以省略了。

题目2、树的寻路

给定一棵有n个节点且节点编号为1到n的树,求满足以下条件的路径组合数:

1.从节点a到节点b的路径(称为路径ab) 边数为p。

2.从节点c到节点d的路径(称为路径cd)边数为q。

3.路径ab和cd不交,即不存在一个节点既在路径ab、又在路径cd上。

示例 有4个节点,有3条路径,12,23,34,结果有8个
组合应该是
12,34
21,34
12,43
21,43
34,12
34,21
43,12
43,21
我暴力求解,数量少还行,多了就超时了,

你可能感兴趣的:(算法编程,算法)