‘壹’ 算法正确的程序对于相同的输入一定有相同的结果,为什么正确
该说法不正确,如果算法中包含了随机步骤,每次运行的结果不一定相同
‘贰’ C++算法问题“M个相同苹果放进N个相同盒子,Return S 方法值”
你先假设盒子放苹果的放置方法是有序的。。。。
后一个盒子比前一个盒子放的多。。。
i个苹果放j个盒子
那么f[i][j]=f[i-j][j]+f[i][j-1];
这个是递推式,注意边界条件即可。。。
‘叁’ 求算法问题: 一个数组a中有n个整数,如何设计算法,使其中相同的数只有一个。并给出程序。
对数组进行排序,然后将相邻的如果相等的去掉就可以了
int m=0;
for(i=1;i<n;i++)
{
if(a[i] != a[m])
a[++m]=a[i];
}
m++;
排序可以调用库函数
c++ sort(a,a+n);
c qsort
‘肆’ 相同算法如何写出不同程序
相同算法通过不同的编写语言可以做出不同的程序。算法是解决问题的步骤,只是一个思路,程序是算法的代码实现,为实现相同的一个算法,用不同语言编写的程序会不一样。
‘伍’ 设求解同一问题有四种算法,这四种算法各自的时间复杂度分别为O(n^2), O(nlogn), O(2^n),O(n),
常用的时间复杂度所耗费的时间从小到大依次是:
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2^n)<O(n! )<O(n^n)
‘陆’ 求例子:随问题实例规模增大,同一算法的求解时间可能波动甚至下降
在分解质因数的算法中会有这种情况:
当数值为2^n时,求解时间会下降
‘柒’ 时间复杂度相同的算法一样好吗
如果只分析你上面段程度,显然方法二做了许多无用功,当然一好。
时间复杂度估的是个时间随规模n增长的趋势,他俩的趋势是一样的。给定规模n,如果方法二能跑,那方法一肯定能跑,只不过比前者多常数倍时间而已,你跑1秒,我不过跑2秒而已,你跑一天,我跑俩天而已,你要跑一年以上,那劝你还是找个更快的算法吧,从这个角度理解,它俩是一样的。由于是常数倍的,不会随着n增长而增长,所以可以说和方法二一样。另外算法的实现还带着常系数,O(n)啥的都把系数略掉了,之所以略掉,是因为它不随着n的增长而改变,相同时间复杂度的算法之间,实现时间本身就差着常数倍。
‘捌’ 对于同一个问题可采用不同的算法去解决,但不同的算法通常具有相同的效率这句话错在哪 急!
不同的算法不会有相同的效率。
就比如11x12=132
第一种算法,两边一拉中间相加。像左1 右2 中间1+2=3
再举个例子11x55 605
第二种算法,归整零相加。像10x12+12
‘玖’ 同一个问题算法不同,结果必不同
一个算法最多可以包含三种逻辑结构的任意组合,故A不正确;
同一问题的算法不同,结果必然相同,故B不对;
算法既能用图形方式来表示,也能用自然语言来表示,故C不正确;
一个算法可以含有上述三种逻辑结构的任意组合,故D正确.
故选D.
‘拾’ 排序算法中对于同一个问题若有一个算法是稳定的另一个算法是不稳定的,哪一个
这算法的一个结果都算是稳定的,一个标准都是非常好的基本面