昨天算法今天后端,又水了两把笔试…在这里把待解决的编程题整理一下,端午回来了填坑。
三角形个数
如图所示,N层对应的三角形个数为?(除了使用递推公式,感觉应该用递归的方法,没时间写了…)
ans
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
//注意while处理多个case
int N = in.nextInt();
int result = countTriangles(N);
System.out.println(result);
}
}
private static int countTriangles(int N){
if(N == 0 || N == 1) return N;
int before = 1;
int cur = 0;
while(N>1){
int one = 2*N-1; //包含最后一层的边长为1的三角形个数
int upright = N*(N-1)/2; //包含最后一层的其他边长的正立三角形个数
int upsideDown = 0;
if((N&1)==1) upsideDown = (N-1)*(N-3)/4; //N为奇数时,包含最后一层的其他边长的倒立三角形个数
else upsideDown = (N-2)*(N-2)/4; //N为偶数时,包含最后一层的其他边长的倒立三角形个数
cur = one + upright + upsideDown + before;
before = cur;
N--;
}
return cur;
}
}
钞票组合
输入:N (钞票的种类个数,1~10)
输入:M(要组合得到的重量,1~100)
输入:N个钞票对应的 value, minWeight, maxWeight
所有的都是int值。 <