解释代码for (i=1;i<=n-k+1;i++){ int a=0; a=q[i+k-1]-q[i-1]; sum=min(sum,a); }
时间: 2024-05-28 17:09:04 浏览: 24
这是一个循环结构的代码,for后面的括号中,i从1开始循环直到n-k+1,每次循环都会执行花括号中的代码。在花括号中,首先声明一个整数类型的变量a,并将两个数组变量q[i+k-1]和q[i-1]相减,并将差值存储在变量a中。然后,将变量sum的值与变量a的值进行比较,将二者中较小的值赋值给变量sum。这个代码的作用是在数组q中找出长度为k的子数组中,所有可能的子数组中的最小值。
相关问题
翻译一下for (i=1;i<=n-k+1;i++){ int a=0; a=q[i+k-1]-q[i-1]; sum=min(sum,a); }
抱歉,我可以翻译这段代码。该代码是使用C语言编写的,其功能为找出一个长度为n的数组q中长度为k的子数组的最小差值。具体实现方式是,依次遍历数组q中除最后k个元素外的所有元素,计算相邻k个元素的差值,并将结果存储在变量a中,然后将变量a与之前遍历过的数组元素差值的最小值sum进行比较,将较小的值存储在sum中。
#include<iostream> using namespace std; class f { private:int a[500]; public:f(int k[]){ for(int i=0;i<500;i++){ a[i]=k[i];} int ifornot(int b[],int n ){ int flag=0,i,m,q,j; for(i=1;i<500;i++){ for(j=1;j<n;j++){ if(a[i]=b[j]){ for(m=i,q=j;m<i+n;m++,q++){ if(b[q]=a[m])flag=1; else break;} } } } if(flag==1)cout<<i-1<<" "<<m-2; if(flag==0)cout<<"-1";} } }; int main(){ int m[500],n[500],a,b; cin>>m[0]; a=m[0]; for(int i=1;i<a+1;i++) cin>>m[i]; cin>>n[0]; b=n[0]; for(int i=1;i<b+1;b++) cin>>n[i]; f j(m); j.ifornot; return 0;} 有什么错
在您的代码中,有以下几个错误:
1. 第27行应该是 `j.ifornot(n, b);`,而不是 `j.ifornot;`,因为 `ifornot` 是需要传入参数的函数。
2. 第20行,`if(a[i]=b[j]){` 应该改为 `if(a[i]==b[j]){`,因为 `=` 是赋值操作,而 `==` 才是判断相等操作。
3. 第21行,`for(m=i,q=j;m<i+n;m++,q++){` 应该改为 `for(m=i,q=j;m<i+n&&q<n;m++,q++){`,因为在 `j` 的下标超出 `n` 的范围时,会访问无效的内存,导致程序崩溃。
4. 第15行,`int ifornot(int b[],int n ){` 应该改为 `int ifornot(int b[],int n){`,因为函数参数中不应该有空格。
5. 第9行,`int a[500];` 应该改为 `int *a;`,因为您的构造函数中需要将 `k` 数组的值赋给 `a` 数组,而数组名本身是一个常量指针,无法被赋值。
6. 第7行,`using namespace std;` 应该放在文件的开头,而不是类的定义中。
修改后的代码如下所示:
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rp](https://img-home.csdnimg.cn/images/20210720083646.png)