我知道运动的踪迹是模棱两可的,但我是从网上挑战赛中获得这一挑战的。
我不知道该如何解决。我想知道如何解决以及解决此类问题所需学习的知识。
鉴于数字N和K(均为整数),我必须创建一个方法,将最大和从1返回到N,避免所有产生K的和。
这里是一个例子: N = 4和K = 4 得出k = 1 + 3,4 + 0的总和。 (每个总和只能考虑一次,因此3 + 1等于1 + 3,而且每个数字都必须取一次,所以我们不能做1 + 1 + 1 + 1)。
N的最大和为= 2 + 3 + 4 = 9。
答案 0 :(得分:0)
您的描述相当混乱。我相信这就是您要实现的目标。
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = 0;
int k;
ArrayList<Integer> nums = new ArrayList<>();
int sum = 0;
System.out.println( "Please enter a value for n" );
n = s.nextInt();
System.out.println( "Please enter a value for k" );
k = s.nextInt();
for(int i = 0; i < n; i++) {
if(( i + n ) != k) {
nums.add( i );
}else {
System.out.println( "Sum equal to value of K, sum skipped." );
}
}
for (int value : nums) {
sum += value;
}
System.out.print( sum );
}
答案 1 :(得分:0)
好吧,由于您没有付出任何努力(抱歉,代码丢失),所以我只能为您提供必要的步骤,您必须使用这些步骤自己编写代码:
public int getMaxSumNotEqualToK(int n, int k)
或简单命名Set<Integer>
0
到n
范围内的所有其他数字求和,我使用了两个for
循环Set<Integer>
,则将它们添加到k
Set
中最大的数字请注意,这也可以通过许多不同的方式完成,这只是一个示例。
答案 2 :(得分:0)
这是一个非常简单的任务:
public static int getMaxSum(int n, int k) {
int max = 0;
for (int i = 1; i <= n; i++) {
int sum = 1;
for (int l = 1, r = 1; r <= n; ) {
if (r - l + 1 == i) {
max = Math.max(max, sum == k ? max : sum);
sum += ++r;
sum -= l++;
} else
sum += ++r;
}
}
return max;
}