C 增加数组中的间隔,检查
因此,我试图检查之前输入的数组是否以1的间隔递增,从数字1开始,以n结束(n是数组大小) 以下是我目前得到的信息:C 增加数组中的间隔,检查,c,arrays,C,Arrays,因此,我试图检查之前输入的数组是否以1的间隔递增,从数字1开始,以n结束(n是数组大小) 以下是我目前得到的信息: for (int i =0; i<n;i++){ for (next=i;next<n;next++){ if(arr[i]+1 = arr[next]){ x = 1; //ignore this, it relates to the re
for (int i =0; i<n;i++){
for (next=i;next<n;next++){
if(arr[i]+1 = arr[next]){
x = 1; //ignore this, it relates to the rest of the code.
}
else{
printf ("\nThis is not a permutation.");
break;
}
}
}
(int i=0;i的
如下所示:
if(arr[i]+1 = arr[next]){
您打算进行比较:
if(arr[i]+1 == arr[next]){
您是否尝试了if(arr[i]+1==arr[next])
而不是if(arr[i]+1=arr[next])
?如果您需要检查序列是否在增加,为什么要将每个元素与其他元素进行比较?您应该只需要一个for循环:
for (i = 1; i < n; i++)
{
if (arr[i - 1] + 1 == arr[i])
... // keep going
else
... // not a permutation
}
(i=1;i
{
如果(arr[i-1]+1==arr[i])
…继续
其他的
…//不是一个排列
}
基本上,您的代码所做的是逐个检查第i个1后面的每个元素是否大于第i个1。最终,这将导致一种不可能的情况(因为两个数字必须相等,但必须同时相差1)。听起来您想测试
arr[0]==1
并且每个后续数组元素都比上一个元素大。这不等于检查数组中的值[1,2,3,…,n]
for (int i = 0; i < n; ++n) {
if (arr[i] != i + 1) {
printf("\nThis is not a permutation.");
break;
}
}
for(int i=0;i
“此外,如果您能深入了解数组是否以数字1开头,我们将不胜感激。”为什么您不能只检查arr[0]==1
?如果您用编程语言标记您的帖子,您将获得更多点击率。您是否在问如何测试数组是否包含值[1,2,3,…,n]
?=
vs=
再次罢工!好的,谢谢,我改变了。现在,它总是打印“这不是一个排列,”即使它是正确的,也不停止。无论发生什么,它似乎都默认为else。你能先清理一下你的代码吗?我看到缺少一个大括号,如果所有内容都是整齐的格式,可能更容易发现。你确定你的arr
中有顺序值吗?为什么不在比较元素之前打印它们呢?我试过了,它似乎在比较它们,但即使它增加了1,它也默认为else子句。