package test;
public class Test {
/**
*其效率比常规算法效率缩短1/3
*其为一种简单实现,必然存在更优算法
*算法实现来自一道编程题:
*已知abc+cba=1333,其中a,b,c均为一位数。
*编程求出满足条件的a,b,c的所有组合。
*/
public static void main(String[] args) {
//用户输入的一个数
int num = 122531;
//统计有几种方案
int count = 0;
//通过算法定义循环从哪个数开始
final int start = start(num);
//通过算法定义循环从哪个数结束
final int end = end(num);
//打印出符合条件的结果
for (int i = start; i <= end; i++) {
if((i+result(i))==num){
count++;
System.out.println(i+"+"+result(i)+"="+num);
}
}
System.out.println("共有"+count+"种方案");
}
public static int start(int num){
int x = num/3;
int l = String.valueOf(x).length();
int value = 1;
for (int i = 1; i < l; i++) {
value = 10*value;
}
return x-value;
}
public static int end(int num){
int x = num/3;
int l = String.valueOf(x).length();
int value = 1;
for (int i = 1; i <= l; i++) {
value = 10*value;
}
return value-1;
}
public static int result(int x){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < String.valueOf(x).length(); i++) {
sb.append(String.valueOf(x).charAt(i));
}
int y = Integer.parseInt(sb.reverse().toString());
return y;
}
}
分享到:
相关推荐
这道题目的目标是找到满足abc+cba=1333条件的一位数对。使用了三层嵌套循环遍历所有可能的一位数组合,当找到符合条件的a、b、c时,打印它们。这里体现了循环结构和条件判断的应用。 4. 使用海伦公式求三角形面积...
1. **ABC全排列**:全排列算法用于生成一个集合的所有可能排列组合。可以使用回溯法或者DFS(深度优先搜索)来实现,对于三个元素ABC,会得到ABC, ACB, BAC, BCA, CAB, CBA这六种排列。 2. **猜车牌号**:这个可能...
3. **数字排列问题**:这是一个简单的两层嵌套循环,用于遍历所有可能的一位数组合,检查它们是否满足abc+cba=1333的条件。通过这种方式,我们可以找到所有符合条件的a, b, c值。 4. **海伦公式求三角形面积**:...
问题:已知 abc+cba=1333, 其中 a、b、c 均为一位数,例如:617+716=1333, 518+815=1333,试编程求出符合这一规律的 a、b、c,并输出结果。 分析:该题目要求使用三层循环语句来枚举所有可能的 a、b、c 值,并使用 ...
3. 数字规律查找:这是一个三重嵌套循环,用于遍历所有可能的一位数组合,寻找满足abc+cba=1333的a、b、c值。利用if语句进行条件检查,当找到符合条件的组合时输出结果。 4. 海伦公式求三角形面积:本题涉及到...
字符串的全排列和组合算法是计算机科学中的一种基础算法,主要应用于数据处理和问题求解。在本文档中,我们将探讨如何使用C++实现字符串的全排列算法,并讨论如何处理包含重复字符的情况。 首先,全排列是指从一个...
例如,对于字符串 "abc",其所有可能的排列为 "abc"、"acb"、"bac"、"bca"、"cab" 和 "cba"。 **代码分析:** ```java public class Permutation { public static void permute(String str) { char[] strArray = ...
for C1 in range(0, C): # 左 [ABC] tempResult = tempResult + L[C1] tempResult = tempResult + L[C] # 中 [D] for C2 in range(C - 1, -1, -1): # 右 [CBA] tempResult = tempResult + L[C2] for C3 in ...
- **递归算法**:通过递归调用自身函数来生成所有可能的组合,通常会利用回溯思想来实现。 - **非递归算法**:使用迭代方法实现全排列,通常涉及循环和交换元素等操作。 #### 非递归算法示例 假设有一个字符串S = ...
在编程领域,字符串排列组合是一个常见的算法问题,它涉及到如何生成一个字符串的所有可能的排列方式。这个主题主要与计算机科学的算法设计和技术有关,尤其是在数据结构和算法分析的课程中经常遇到。本节将深入探讨...
`while`循环在条件满足时执行循环体,`do-while`循环先执行一次再检查条件,`for`循环常用于已知循环次数的情况。 2. **break和continue语句**:`break`用于立即退出最内层循环,`continue`则跳过当前循环剩余部分...
result += self.swap(newElem, elem) return result def swap(self, newElem, Elem): # 处理字符交换 result = [] listElem = list(Elem) listElem.insert(0, newElem) result.append(''.join(listElem)) ...
- **全排列**:给定一组不重复的元素,求出所有可能的排列组合。例如,对于`{'A', 'B', 'C'}`这三个不同的字符,其全排列结果共有6种:`ABC`, `ACB`, `BAC`, `BCA`, `CAB`, `CBA`。 #### 实现方法 - **递归法**:...
例如,如果从集合{a, b, c}中选择三个元素,所有可能的排列有abc, acb, bac, bca, cab, cba,总共有6种不同的排列。排列的数量可以用阶乘表示,对于n个不同元素的排列,其数量为n!。 组合则是无序的选择,只关心...
回溯法是一种解决此类问题的有效方法,它通过尝试所有可能的解决方案并逐步撤销那些不符合条件的尝试,来找到所有正确答案。在此,我们将深入探讨回溯法以及如何使用它来生成字符串的全排列。 首先,回溯法是一种...
给定一个数组,算法可以生成所有可能的排列组合,例如,对于数组{a, b, c},全排列算法可以生成以下六种排列组合:abc, acb, bac, bca, cab, cba。 2. 递归思路 递归思路是实现全排列算法的关键。递归思路的基本...
例如,如果存在一个三位数abc,满足abc = a! + b! + c!,那么这个数就是我们要找的特殊数。 **解题思路** 为了找到这个特殊数,我们需要编写一个程序来遍历所有的三位数(100至999之间),并计算每个数的每一位数字...
- 示例:`REV("ABC") = "CBA"` 5. **数组操作** - 插入元素:`INSERT(STR,X,Y)` 或 `INSERT(An,X,Y)` - 示例:`INSERT("ABC", "12", 2) = "AB12C"` - 删除元素:`DEL(STR,X)` 或 `DEL(An,X)` - 示例:`DEL(...
全排列算法: 比如字符串abc,全排列结果为abc,acb,bac,bca,cba,cab。