gpt4 book ai didi

c++ - 检查彩虹数组(检查数组的反向样式是否与自身匹配)

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

#include <iostream>
int main(){
bool check;
int lenght=1,height=1;
int array[height][lenght];
std::cin>>height;
int a=0;
for(int i=1;i<=height;i++){
std::cin>>lenght;
for(int i=0;i<=lenght;i++)
std::cin>>array[a][i];
if (lenght%2==0){
int array1[height][lenght/2],array2[height][lenght/2];
for(int i=0;i<=lenght/2;i++)
array1[a][i]=array[a][i];
for(int i=0;i<=lenght/2;i++)
array2[a][i]=array[a][lenght-i-1];
for(int i=0;i<=lenght/2;i++)
if(array1[a][i]!=array2[a][i])
check= false;
a++;
check=true;
if(check==true)
std::cout<<"its rainbow array ! ";
else
std::cout<<"you cant get any unicorn :( ";
}
else{
int array1[height][lenght/2-1],array2[height][lenght/2-1];
for(int i=0;i<lenght/2-1;i++)
array1[a][i]=array[a][i];
for(int i=0;i<lenght/2-1;i++)
array2[a][i]=array[a][lenght-i-1];
for(int i=0;i<lenght/2-1;i++)
if(array1[a][i]!=array2[a][i])
check= false;
a++;
check=true;
if(check==true)
std::cout<<"its rainbow array ! ";
else
std::cout<<"you cant get any unicorn :( ";
}
}

}

抱歉英语不好。我正在尝试检查我们是否将数组分成两半,然后检查这些部分是否匹配。例如 = 1,2,3,4,5,6==> 这不是彩虹数组1,2,3,4,5,4,3,2,1==> 这是彩虹阵列。这是程序应该如何工作:

1=User enters an integer, that will be our height, tells us how many number lists we will test. 2=User enter integer how long first list will be. Then program will get inputs from user for list. 3=Program should separate major list to 2 minor lists. 4=Program copying major list's elements to 2 minor list's.

在最后阶段,它比较 2 个列表并将 bool 值更改为 true 或 false。但在我的情况下它总是正确的。这是我几个小时前写的工作代码。

#include <iostream>
bool checkarray(int *array,int lenght);
int main(){
int array[9]={1,2,3,4,5,4,3,2,4};
int lenght=9;
if(checkarray(array,lenght)==true)
std::cout<<"its rainbow array ! ";
else
std::cout<<"you cant get any unicorn :( ";
}
bool checkarray(int array[],int lenght){
if (lenght%2==0){
int array1[lenght/2],array2[lenght/2];
for(int i=0;i<=lenght/2;i++)
array1[i]=array[i];
for(int i=0;i<=lenght/2;i++)
array2[i]=array[lenght-i-1];
for(int i=0;i<=lenght/2;i++)
if(array1[i]!=array2[i])
return false;

return true;
}
else{
int array1[lenght/2-1],array2[lenght/2-1];
for(int i=0;i<lenght/2-1;i++)
array1[i]=array[i];
for(int i=0;i<lenght/2-1;i++)
array2[i]=array[lenght-i-1];
for(int i=0;i<lenght/2-1;i++)
if(array1[i]!=array2[i])
return false;

return true;
}
}

但每当我想添加用户体验时,它就像第一个代码一样发生。请帮忙

最佳答案

对于奇数长度数组,您应该使用 length/2 而不是 length/2-1。如果长度为 9,则 length/2-1 = 3,因此您将只检查前 3 个元素和后 3 个元素,而不是 4 个。实际上,您甚至不需要在单独的分支中处理这两种情况。

bool checkarray(int array[],int length){
for(int i=0;i<length/2;i++)
if(array[i]!=array[length-1-i])
return false;
return true;
}

关于c++ - 检查彩虹数组(检查数组的反向样式是否与自身匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45890572/

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