所以我试图检查先前输入的数组是否以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 rest of the code.
}
else{
printf ("\nThis is not a permutation.");
break;
}
}
}
现在,我的想法是这段代码会比较彼此相邻的参数,如果以下参数等于前一个+1,那么它显然会增加1.问题是,当这是假的时候,它不会打印“这不是一种排列”,并且不会打破循环。
任何帮助都将不胜感激。
此外,任何关于检查数组是否以数字1开头的见解都将不胜感激。
由于
答案 0 :(得分:0)
看起来像这一行:
if(arr[i]+1 = arr[next]){
您打算比较:
if(arr[i]+1 == arr[next]){
答案 1 :(得分:0)
您是否尝试过if(arr[i]+1 == arr[next])
而不是if(arr[i]+1 = arr[next])
??
答案 2 :(得分:0)
如果您需要检查序列是否正在增加,为什么要将每个元素与其他元素进行比较?你应该只需要一个for循环:
for (i = 1; i < n; i++)
{
if (arr[i - 1] + 1 == arr[i])
... // keep going
else
... // not a permutation
}
基本上,你的代码所做的是检查每个元素之后,第i个元素大于第i个元素。最终,这会导致一种不可能的情况(因为两个数字必须相等但必须同时相差一个)。
答案 3 :(得分:0)
听起来你想要测试arr[0] == 1
和每个后续数组元素是否1
大于前一个元素。是否与检查数组[1,2,3,...,n]
?
for (int i = 0; i < n; ++n) {
if (arr[i] != i + 1) {
printf("\nThis is not a permutation.");
break;
}
}