gpt4 book ai didi

java - 在不使用数组的情况下生成并打印数字的所有 "anagrams"的程序

转载 作者:行者123 更新时间:2023-11-30 08:42:24 24 4
gpt4 key购买 nike

这是一个 Java 程序,可以在不使用数组的情况下生成和打印四位数字的所有可能的“Anagrams”。到目前为止,这是我能够做的:

import java.util.*;
class Anag {
public static void main() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int d = n % 10;
n = n / 10;
int c = n % 10;
n = n / 10;
int b = n % 10;
n = n / 10;
int a = n;
int w = a, x = b, y = c, z = d, co, i, j;
System.out.println(w * 1000 + x * 100 + y * 10 + z * 1);
for (i = 1; i <= 4; i++) {


for (j = 1; j <= 3; j++) {


if (j % 3 == 1) {
co = w;
w = x;
x = co;
System.out.println(w * 1000 + x * 100 + y * 10 + z * 1);
}
if (j % 3 == 2) {
co = x;
x = y;
y = co;
System.out.println(w * 1000 + x * 100 + y * 10 + z * 1);
}
if (j % 3 == 0) {
co = y;
y = z;
z = co;
System.out.println(w * 1000 + x * 100 + y * 10 + z * 1);

}

}
}
}
}

使用上面的代码,我已经能够生成 12 个“Anagrams”,但我不知道如何生成剩余的 12 个(总共应该有 24 个)。有人有什么想法吗?

最佳答案

以下算法应该适合您。简而言之,您将数字轮换,每 4 个字谜交换前两位数字,但在第 12 个字谜之后交换第 1 位和第 3 位数字。

public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();

int d = n % 10;
n = n / 10;
int c = n % 10;
n = n / 10;
int b = n % 10;
n = n / 10;
int a = n;

int t;
for (int i = 0; i < 24; i++) {
System.out.println(a * 1000 + b * 100 + c * 10 + d);
if (i == 11) {
t = a;
a = c;
c = t;
}
if (i % 4 == 3) {
t = a;
a = b;
b = t;
} else {
t = a;
a = b;
b = c;
c = d;
d = t;
}
}
}

关于java - 在不使用数组的情况下生成并打印数字的所有 "anagrams"的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34570494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com