提交 01602f28 编写于 作者: 张志晨

remove bad exercises

上级 5592557a
# 提前还款
小明有一笔商业贷款6w,3年先息后本,具体计算为:前18个月仅需每月利息180元,后18个月每个月偿还本金3334元,外加利息180元,每月递减10元。(如第19月偿还本金3334加利息180,第20月偿还本金3334加利息170元,依次类推)。
银行规定小明有3次提前还款机会,提前还款额可用于缩减剩余期限的每月还款(如提前还款2w,剩余月份每月还款额减少1/3)。
小明每月可支配还款额为3000元。不考虑存款的其它收益,计算不同还款方案最终利息支出总额
## 输入描述
输入还款月份和金额,月份和金额之间用空格,二者都是正整数。如10月提前还款10000,20月提前还款10000,则输入:10 10000 20 10000
## 输出描述
输出最终利息总额,四舍五入保留2位小数
## 输入样例
20 6000
## 输出样例
3590.00
## 提示
1. 月数为1-36的正整数,金额为正整数
2. 提前还款金额必须小于小明当前的存款总额,每月还款需从存款总额中扣除
# 同音词的句子组合
定义:
* 在一节语文课上,老师教了同学一个字有多个同音字, 比如老师喊道 "张山" , 假设老师今天教了 "张" 字的同音字有 "章,樟",
* "山" 字的同音字有 "删,衫,姗"。那么老师喊 "张山" 的时候,同音字组成的名字有哪些。
问题:写一个算法,输入老师说的话,和老师教的同音词,打印出所有同音词组成的语句。
## 输入描述
第一行输入老师说的话,比如老师喊:"张山"
第二行输入老师教的同音词,输入的格式为:名字中的 "字 + 冒号 + 同音字列表(多个同音自用逗号隔开)", 字与字直接用分隔符 "|" 分隔
比如: "张:章,樟|山:删,衫,姗"
注意:
1. 老师说的话中可以包含英文,英文认为是没有同音词的, 比如老师说: 今天下完课回去看ac米兰比赛
2. 限定老师说话的字数不超过 200 个字
## 输出描述
同音字组合成的语句,每个同音字组合成的语句换行输出
## 输入样例
张a山
张:章,樟|山:删,衫,姗
## 输出样例
张a山
张a删
张a衫
张a姗
章a山
章a删
章a衫
章a姗
樟a山
樟a删
樟a衫
樟a姗
## 提示
class Solution {
public static void mergeSort(int[] nums) {
if (nums == null || nums.length == 0) {
return;
}
int[] helper = new int[nums.length];
mergeSort(nums, helper, 0, nums.length - 1);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
private static void mergeSort(int[] nums, int[] helper, int low, int high) {
if (low < high) {
int middle = low + (high - low) / 2;
mergeSort(nums, helper, low, middle);
mergeSort(nums, helper, middle + 1, high);
merge(nums, helper, low, middle, high);
}
}
private static void merge(int[] nums, int[] helper, int low, int middle, int high) {
for (int i = low; i <= high; i++) {
helper[i] = nums[i];
}
int left = low;
int right = middle + 1;
int curr = low;
while (left <= middle && right <= high) {
if (helper[left] <= helper[right]) {
nums[curr++] = helper[left++];
} else {
nums[curr++] = helper[right++];
}
}
int remain = middle - left;
for (int i = 0; i <= remain; i++) {
nums[curr + i] = helper[left + i];
}
}
}
\ No newline at end of file
# 归并排序
你需要用归并排序算法,对数组进行排序,并输出按照升序排序的字符数字串
归并排序算法的基本思想是将两个(或两个以上)有序表合并成一个新的有序表,
即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
## 输入描述
你需要对输入的数组根据归并排序算法升序排序
## 输出描述
输出按照升序排序的数组
## 输入样例
输入nums数组为:
1. int[] nums = new int{}[1,2,4,3,5,6,7,8];
2. int[] nums = new int{}[1,5,6,10,12,15,2,4];
3. int[] nums = new int{}[1,4,90,12,14,19,3,4];
## 输出样例
1. 1,2,3,4,5,6,7,8
2. 1,2,4,5,6,10,12,15
3. 1,3,4,4,12,14,19,90
## 提示
\ No newline at end of file
int[] nums = new int{}[1,2,4,3,5,6,7,8];
\ No newline at end of file
int[] nums = new int{}[1,5,6,10,12,15,2,4];
\ No newline at end of file
1
2
4
5
6
10
12
15
\ No newline at end of file
int[] nums = new int{}[1,4,90,12,14,19,3,4];
\ No newline at end of file
1
3
4
4
12
14
19
90
\ No newline at end of file
# 一个字符串作为输入返回该字符串中元音字母的数量
请编写一个函数 countVowels,该函数接受一个字符串作为输入,然后返回该字符串中元音字母的数量。
## 输入描述
一个字符串。
## 输出描述
一个数字,表示该字符串中元音字母的数量。
## 输入样例
console.log(countVowels('hello')); // 输出 2
## 输出样例
console.log(countVowels('javascript')); // 输出 3
console.log(countVowels('world')); // 输出 1
console.log(countVowels('')); // 输出 0
console.log(countVowels('aeiou')); // 输出 5
console.log(countVowels('AEIOU')); // 输出 5
console.log(countVowels('hjklmnpqrstvwxyz')); // 输出 0
console.log(countVowels('Hello World!')); // 输出 3
console.log(countVowels('To be or not to be, that is the question.')); // 输出13
console.log(countVowels('Brevity is the soul of wit.')); // 输出 8
## 提示
遍历字符串,依次检查每个字符是否是元音字母;
如果是,则将计数器加1;
最后返回计数器的值。
function countVowels(str) {
const vowels = ['a', 'e', 'i', 'o', 'u'];
let count = 0;
for (let i = 0; i < str.length; i++) {
if (vowels.indexOf(str[i].toLowerCase()) !== -1) {
count++;
}
}
return count;
}
\ No newline at end of file
19
XLL
L
M
XLLLL
XLLLLL
L
XLLL
M
XLLLLL
M
S
XLLL
XLLL
XLLL
XLLL
S
S
S
S
S
XLLLLL
L
M
XLLL
M
XL
XL
XLLL
XL
S
XL
XL
XLLLLL
XLLLL
S
XL
L
XLLL
79
XLLLL
XLLLLL
XLL
XLLL
M
XL
S
XL
XLLLL
M
L
XLL
XLLLL
S
XL
XL
XL
XLLL
S
M
XLLLL
XLLL
XLLLL
L
XLLLL
XLL
XLLLL
XLLLLL
M
XL
XLLLLL
S
XLLLLL
XLLLLL
L
M
XL
XLLL
S
XLLL
XLLL
XLLLL
XLL
XLLLL
XLLLL
XLLLLL
S
XLLL
XLL
M
XLLLLL
L
XLL
XLLLLL
XLL
XLL
XLL
M
XLLLLL
XLLL
XL
XLLL
XLLLL
XL
M
XLLLLL
M
S
S
M
XLLL
XLLLL
XL
L
XLLLLL
XLLLL
L
XLLL
XL
XLLLL
XL
XLLLLL
XLLL
L
S
XL
XLL
XLLL
L
XLLL
XLLLLL
XL
XLLLL
XLLL
XL
XLLLL
M
S
S
XLLLLL
XLLLLL
L
XLLLL
S
M
M
XLLLLL
S
XLLLL
XLLL
XL
XLL
XL
XLLLLL
M
XLLLLL
XLLLLL
M
XLL
L
XLLLLL
XLLLL
XLL
S
XLLL
S
XLLLLL
XLLL
XL
S
S
XLLLL
XL
XLLL
XLLLL
M
S
XLLL
L
XLLL
XLLLL
XLLL
M
XLLL
XLLL
XLLLL
XL
M
L
XL
L
XLLLL
XLLLLL
XLL
XLL
XLLLLL
S
XLL
38
S
M
XL
XLLLL
XLLLLL
XLLLL
XLLL
XLLLLL
M
XLLLL
XLL
S
XL
XLLL
S
L
XLLLLL
XL
XLL
S
S
L
M
XLL
XLLLL
L
XLL
L
XLL
XLL
XLLLL
S
XLLLL
XLLLL
XL
XL
L
M
XLL
L
XLLLLL
XL
XLLLLL
L
XL
XLLLLL
S
L
XLLLLL
L
XLLLL
XLLLLL
XL
XLL
XL
M
XLL
S
XLL
XL
XL
XL
XLLL
XLLL
L
S
XLL
XLLLL
L
L
M
XL
XLLLLL
M
XLLL
M
# 全排列
定义:
* 排列 (P(n, m)))(英语:Permutation)是将相异物件或符号根据确定的顺序重排。每个顺序都称作一个排列
* P(n, n) 称为全排列
问题:假设有一个短字符串,没有重复字符,并且都是英文字母。我们现在要写一个程序,生成其字符的全排列
**注意**:为了便于校验,需要按字典序逐行输出结果
## 输入描述
输入一个字符串
## 输出描述
输出所有排列,每行一个
## 输入样例
abc
## 输出样例
abc
acb
bac
bca
cab
cba
## 提示
def permutation(data):
if len(data) < 2:
yield data
return
if len(data) == 2:
yield data
yield data[1]+data[0]
return
for i in range(len(data)):
element = data[i]
sub = data[:i] + data[i+1:]
for token in permutation(sub):
yield element + token
if __name__ == "__main__":
word = input("input:")
result = [t for t in permutation(word)]
result.sort()
for e in result:
print(e)
# 汉诺塔
定义:汉诺塔 (Tower of Hanoi)是根据一个传说形成的数学问题:
有三根杆子A,B,C。A杆上有 N 个 (N>1) 穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至 C 杆:
1. 每次只能移动一个圆盘;
2. 大盘不能叠在小盘上面。
3. 为简单起见,我们限定不超过10个盘子
问题:如何移?最少要移动多少次?
## 输入描述
输入塔的层数
## 输出描述
逐行输出每一个移动步骤。最后一行输出执行了多少步
## 输入样例
3
## 输出样例
A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
7 times
## 提示
可将圆盘临时置于 B 杆,也可将从 A 杆移出的圆盘重新移回 A 杆,但都必须遵循上述两条规则。
def hanoi(n, a, b, c):
if n == 1:
print(a, ' -> ', c)
else:
hanoi(n - 1, a, c, b)
hanoi(1, a, b, c)
hanoi(n - 1, b, a, c)
if __name__ == '__main__':
levels = int(input("dash count:"))
hanoi(levels, 'A', 'B', 'C')
print(2**levels-1, " times")
# 蓄水池截面积
工匠用高度不同但宽度一致的隔板修建蓄水池,将隔板按顺序码好后,再将其前面和后面封闭,求蓄水池的截面积
## 输入描述
输入一个元素不为负的数组,表示每个石块的排列顺序和高度,当数组元素为0表示该块板的地方空着不放隔板
## 输出描述
输出截面积
## 输入样例
[2,1,0,3]
## 输出样例
3
\ No newline at end of file
[13,2,3,11,4,5,6,9,0,1,3,7]
\ No newline at end of file
import java.util.Scanner;
/**
* @description:
* @author: wmf
* @create: 2022-10-13 14:21
**/
public class TestMain {
public static void main(String[] args) {
Scanner myscanner = new Scanner(System.in);
System.out.println("请输入数字"); // 提示用户输入
while(true){
int number = myscanner.nextInt(); // 接收用户输入
int number1 = number / 100; // 取百位
int number2 = number % 100 / 10; // 取十位
int number3 = number % 10; // 取个位
if (number1 * number1 * number1 +
number2 * number2 * number2 +
number3 * number3 * number3 == number) {
System.out.println(number + "是水仙花数");
} else {
System.out.println(number + "不是水仙花数");
}
}
}
}
# 水仙花数
水仙花数,一个三位数,其各位数字得立方和等于本身,
例如 153 = 1*1*1 + 5*5*5 + 3*3*3。
输入一个数字,判断是否是水仙花数。
## 输入描述
输入一个数字。
## 输出描述
是否是水仙花数。
## 输入样例
153
## 输出样例
## 提示
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册