gpt4 book ai didi

C++如何从输入的字母或数字中输出字母或数字

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:54 25 4
gpt4 key购买 nike

假设我们有以下情况:对于“12323465723”,可能的答案是“abcbcdfegbc”(1 2 3 2 3 4 6 5 7 2 3),“awwdfegw”(1 23 23 4 6 5 7 23) , “lcwdefgw” (12 3 23 4 6 5 7 23),在这种情况下,用户将输入从 1 到 26 的数字,不除以任何空格,程序本身将建议 3 种解释数字的方式,获得最多从 1 到 26 的组合中,这些是从 a 到 z 的值

如您所见,这是经过编辑的,因为这是问题的最后一部分,谢谢所有帮助过我的人,我已经设法解决了一半的问题,只剩下上面提到的那个。

已解决 -> 谢谢

最佳答案

这涉及在每一步的 0 到 2 个结果之间做出决定。基本情况是没有更多字符或不能使用任何字符。在后一种情况下,我们回溯以输出整棵树。我们将 word 存储在内存中,如 dynamic programming .这自然会导致递归算法。

#include <stdlib.h> /* EXIT */
#include <stdio.h> /* (f)printf */
#include <errno.h> /* errno */
#include <string.h> /* strlen */

static char word[2000];
static size_t count;

static void recurse(const char *const str) {

/* Base case when it hits the end of the string. */
if(*str == '\0') { printf("%.*s\n", (int)count, word); return; }

/* Bad input. */
if(*str < '0' || *str > '9') { errno = ERANGE; return; }

/* Zero is not a valid start; backtrack without output. */
if(*str == '0') return;

/* Recurse with one digit. */
word[count++] = *str - '0' + 'a' - 1;
recurse(str + 1);
count--;

/* Maybe recurse with two digits. */
if((*str != '1' && *str != '2')
|| (*str == '1' && (str[1] < '0' || str[1] > '9'))
|| (*str == '2' && (str[1] < '0' || str[1] > '6'))) return;
word[count++] = (str[0] - '0') * 10 + str[1] - '0' + 'a' - 1;
recurse(str + 2);
count--;
}

int main(int argc, char **argv) {
if(argc != 2)
return fprintf(stderr, "Usage: a.out <number>\n"), EXIT_FAILURE;
if(strlen(argv[1]) > sizeof word)
return fprintf(stderr, "Too long.\n"), EXIT_FAILURE;
recurse(argv[1]);
return errno ? (perror("numbers"), EXIT_FAILURE) : EXIT_SUCCESS;
}

当在您的原始输入上运行时,./a.out 12323465723,它给出,

abcbcdfegbc
abcbcdfegw
abcwdfegbc
abcwdfegw
awbcdfegbc
awbcdfegw
awwdfegbc
awwdfegw
lcbcdfegbc
lcbcdfegw
lcwdfegbc
lcwdfegw

(我认为你在lcwdefgw中进行了换位。)

关于C++如何从输入的字母或数字中输出字母或数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55199430/

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