没有合适的资源?快使用搜索试试~ 我知道了~
算法集训之编程大题集一(Java).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 98 浏览量
2024-03-26
15:30:52
上传
评论
收藏 1.4MB PDF 举报
温馨提示
试读
31页
蓝桥杯,赛题解答,历届,内容丰富,信息技术竞赛,计算机类学科竞赛,参考资料
资源推荐
资源详情
资源评论
5
程序输出:
9-3-1
用户输入:
19
程序输出:
27-9+1
要求程序输出的组合总是大数在前小数在后。
//方法1:三进制处理
package com.liu.ex1;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static int[] value = new int
public void printResult(int n) {
int count = 0;
while(n > 0) { //把n转换为三进制
value[count++] = n % 3;
n = n / 3;
}
//对n的三进制数进行处理,得到砝码组合
for(int i = 0;i < 5;i++) {
if(value[i] >= 2) {
value[i] = value[i] - 3
value[i + 1] = value[i
}
}
ArrayList<Integer> list = new A
for(int i = 5;i >= 0;i--) {
if(value[i] == 1) {
int a = (int) Math.pow
list.add(a);
} else if(value[i] == -1) {
int a = (int) (-1 * Mat
list.add(a);
}
0 0
}
System.out.print(list.get(0));
for(int i = 1;i < list.size();i
if(list.get(i) > 0) {
System.out.print("+");
}
System.out.print(list.get(i
}
return;
}
public static void main(String[] ar
Main test = new Main();
Scanner in = new Scanner(System
int n = in.nextInt();
test.printResult(n);
}
//方法2:DFS搜索
package com.liu.ex1;
import java.util.ArrayList;
import java.util.Scanner;
public class Main1 {
public static int[] value = {1,3,9,
public static int n = 0;
public static ArrayList<Integer> re
public int getSum() {
int sum = 0;
for(int i = 0;i < result.size()
sum += result.get(i);
return sum;
}
public void dfs(int step) {
if(step == 5) {
if(getSum() == n) {
int i = result.size() -
for(;i >= 0;i--) {
if(result.get(i) !=
System.out.prin
0 0
i--;
break;
}
}
for(;i >= 0;i--) {
if(result.get(i) ==
continue;
if(result.get(i) >
System.out.prin
System.out.print(re
}
}
} else {
for(int i = -1;i <= 1;i++)
int a = i * value[step]
result.add(a);
dfs(step + 1);
result.remove(result.si
}
}
}
public static void main(String[] ar
Main1 test = new Main1();
Scanner in = new Scanner(System
n = in.nextInt();
test.dfs(0);
}
2
2
公式解析
公式解析
在某些应用中,为了支持灵活性,往往用到自定义的公
比如,有如下的原始公式集合:
int add(int x, int y): 返回x与y的和
int add(int x, int y, int z): 返回x
int min(int x, int y): 返回x,y中较小
int max(int x, int y): 返回x,y中较大
int doubleMe(int x): 返回 x 的2倍
给出一个自定义公式串
add(min(5,3),max(2,8),add(1,doubleMe(1)
通过手工计算可以得出结果为:14
本题的任务是:编写一个解析程序,能够对由上述原始
输入的公式串中可以含有多余的空格,类似:
add( min(5, 3) , max(2 , 8) ) 也是合法的
程序输入:公式串
程序输出:该公式的计算值
package com.liu.ex2;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static Stack<String> operati
public static Stack<Character> brac
public static Stack<Integer> number
public static Stack<Integer> count
public int add(int[] N) {
if(N.length == 3)
return N[0] + N[1] + N[2];
return N[0] + N[1];
}
public int max(int[] N) {
return N[0] > N[1] ? N[0] : N[1
}
剩余30页未读,继续阅读
资源评论
阿拉伯梳子
- 粉丝: 1573
- 资源: 5735
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功