记录一些自己做算法时遇到的Bug
1.数据超出int最大值
for(int i = 0; i < 1 << n; i++){
Arrays.fill(f[i], Integer.MAX_VALUE) ;
}
用上面代码给数组f填充最大值的时候,要注意后面对f[i][j]进行+运算的时候会超出int能表示的最大值。
解决办法:
1.给赋的值除以2(推荐)
for(int i = 0; i < 1 << n; i++){
Arrays.fill(f[i], Integer.MAX_VALUE >> 1) ;
}
2.使用long数组,不过使用long数组的话要注意内存溢出问题,即java.lang.OutOfMemoryError:Java heap space
2. devc++ value of xxx too large for field of 4 bytes at xxx
原因:开的数组太大了。比如开一个长度为 的int数组占用的内存会超过512MB。
3. 使用scanf输入多个数据,当数据类型不一致时,要按照题目给定的数据格式进行读取。
比如输入数据为:-1 1 A,对应的输入格式应为"%d %d %c",中间的空格也不能省略。