提问人:Lauraa 提问时间:3/5/2022 更新时间:3/5/2022 访问量:88
从 1 开始数组是错误的吗?
is it wrong to start an array from 1?
问:
我需要解决一个 c++ 问题,但有些东西不起作用,我不知道为什么。
给出 N 个数字,以 k 个序列划分。我需要找出哪些序列是相等的,知道 k 除以 n。 是一些值的问题作为示例:这是一些值的问题作为示例。(罗马尼亚语)
我尝试了这样的事情:
#include <bits/stdc++.h>
using namespace std;
bool compare(int a[], int b[], int n)
{
for(int i=1;i<=n;i++)
if(a[i]!=b[i])
return false;
return true;
}
int main()
{
int n, k;
int i, j, secv;
cin>>n>>k;
int flag=1, v[n];
for(i=1;i<=n;i++)
cin>>v[i];
secv=n/k;
for(i=1;i<k && flag==1;i++)
for(j=i+1; j<=k && flag==1; j++)
if(compare(v+i*secv, v+j*secv, secv)==true)
{
cout<<i<<" "<<j;
flag=0;
}
if(flag==1) cout<<"NU";
return 0;
}
答:
3赞
Rupakshi
3/5/2022
#1
如果你的数组大小,并且你正在迭代索引处的第一个元素,那么有两个问题:k
1
您的数组将只能保存元素,因为在内存中,数组的第一个元素位于索引处。
k-1
0
一些默认数组函数(如 和 )将包含 0 索引,因此它可能会产生意外结果。
begin
size
数组如何保存在 memeory 中数组名称只是连续内存引用的占位符。因此,如果你从数组开始,那么你就跳过了第一个索引。1
最佳做法是启动索引为 0 的数组。
评论
#include <bits/stdc++.h>
using namespace std;