gpt4 book ai didi

c - "No Output"结果是 C?

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

我正在做一个编程问题,其中一个示例输出是 64197148392731290。我针对该问题的代码是正确的,因为它为我提供了其他测试用例的正确答案(这些测试用例的输出为个位数)。

据我所知,输出为 64197148392731290 的测试用例将会有太多迭代。那么我应该怎么做才能获得该测试用例的正确答案。

这是代码:

#include<stdio.h>
#include<string.h>
int main() {
int test_case;long long int i, j, count, n, k, k1;
scanf("%d", &test_case);
while(test_case--) {
scanf("%lld%lld", &n, &k);
char a[n];
count=0;
k1=k;
scanf("%s", a);
while(k1--) {
strcat(a,a);
}
for(i=0;i<(n*k);i++) {
if(a[i]=='a') {
for(j=(i+1);j<(n*k);j++) {
if(a[j]=='b') {
count++;
}
}
}
}
printf("%lld\n", count);
}
return 0;
}

示例输入和输出:

输入:

3
4 2
abcb
7 1
aayzbaa
12 80123123
abzbabzbazab

输出:

6
2
64197148392731290

我的任务是计算新字符串中子序列“ab”(不一定是连续的)的数量。输入的第一行包含一个整数 T,表示测试用例的数量。 T测试用例的描述如下。

每个测试用例的第一行包含两个整数N和K,分别表示初始字符串S的长度和重复次数。

第二行包含一个字符串S,它的长度正好是N,每个字符都是一个小写英文字母。

最佳答案

如果您尝试将输入存储在“int”中,但由于该数字超出范围而无法工作,请将其更改为“long long int”

嗯,之前的答案肯定是错误的。感谢您提供代码。

抱歉没有时间详细研究,但初步分析告诉我,错误可能是因为你试图在 a[n] 中存储长度为 2n 的字符串。它适用于较小的值,因为当您声明

char a[n];
^
variable known at runtime

它实际上分配了一个大块,以便n在范围内的任何值都是可能的。对于较大的值,strcat(a,a) 可能会失败。

Not sure image is well visible

基本上,字符串在某个地方就被损坏了。这很可能是因为 strcat。我建议删除 strcat,做其他事情来达到类似的效果。

关于c - "No Output"结果是 C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43574336/

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