9.7日晚八点进行了大三上学期第一次算法实验,难度较为简单,但仍有收货。
1.虽是即将步入大三,但是算法相关的内容接触甚少,前两年皆是划水划过去了。在编写程序计算组合数时遇到困难,忽视了边界数据的处理,比如C(1,455)的计算,题目对结果的限制是在double的范围之内,从数学知识入手的话C(1,455)应等于455,而如果直接的计算阶乘进而计算组合数的话,455!将会超出double的范围,因而导致无法计算,需对其分类讨论
if(m ==0)
if(n == 0) result = 0;
else result = 1;
else if (m == 1) result = n;
else result = (f.fact(n) / f.fact(m) / f.fact(n-m));
2.关于Java之中nextline的使用,在用其接受一串输入时总是发生错误,后经查证后得知,nextLine无法与紧接着nextInt等函数使用。因为nextLine会默认接收一个\n换行符,需在二者之间添加一个
String ch = sc.nextLine();
用以起到一个缓冲的作用,接受换行符。
算法课程实验PTA随笔-1
最新推荐文章于 2024-06-13 10:13:20 发布