如果你是说木棍拼成三角形的话,我这有份代码可以给你看一下,不过,虽然算法是对的,不知道为什当时没有AC。就给一组样例,坑啊!!! import java.util.HashSet; import java.util.Scanner; import java.util.Set; /** * 一个盒子里有1-N个木棍,1木棍长1cm,2木棍长2cm,以此类推到N木棍长Ncm。 * 求,最少抽出多少木棍,剩下的木棍不能拼成三角形 * 注:该代码没有AC,这里仅供参考 */ public class Main3 { public static void main(String[] args) {
Scanner in = new Scanner(System.in); int n = in.nextInt();
System.out.print(process(n));
} public static int process(int n) {
Set<Integer> set = new HashSet<>(); int a, b;// a < b; int low, high; int[] woods = new int[n]; for(int i = 0; i < woods.length; i++)
woods[i] = i+1; for(int i = 0; i < woods.length - 1; i++) {
a = woods[i]; for(int j = i+1; j < woods.length; j++) {
b = woods[j]; // (b-a, a+b); low = b-a; // must be > 0; high = a+b > n ? n+1:a+b; for(int k = low+1; k < high && k!= a && k != b; k++)
set.add(k);
}
} return set.size() - 1;
}
}