结构体成员变量赋值出错,不清楚原因,求教
  • 板块学术版
  • 楼主cyx2117
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/9 22:18
  • 上次更新2023/10/27 08:02:22
查看原帖
结构体成员变量赋值出错,不清楚原因,求教
650705
cyx2117楼主2022/10/9 22:18

代码如下

//问题出在第30行  
#include<iostream>
#include<algorithm>

using namespace std;

const int maxn = 5e4 + 100;
int n, k;
int z[maxn];
int ans1, ans2;
int ans;

struct node{
	int r;
	int cnt;
};

node num[maxn];

int main(){
	cin >> n >> k;
	for(int i = 0; i < n; i++){
		scanf("%d", &z[i]);
	}
	sort(z, z + n);
	int l1 = 0, r1 = 0, l2 = 0, r2 = 0;
	while(l1 <= r1 && r1 <= n){
		if(z[r1] - z[l1] <= k) r1++;
		else{	
			num[l1].r = r1;//问题出在这两行 这两行没起作用 
			num[l1].cnt = r1 - l1;
			l1++;
			cout << "r1: " << r1  << " cnt : " << r1 - l1 << endl; // 这两行是调试语句 
			cout << l1 << " : " << num[l1].r  << "  cnt : "<< num[l1].cnt <<  endl;
		} 
	}
	return 0;
}

输入:

7 3
10
5
1
12
9
5
14

输出:

r1: 1 cnt : 0
1 : 0  cnt : 0
r1: 3 cnt : 1
2 : 0  cnt : 0
r1: 3 cnt : 0
3 : 0  cnt : 0
r1: 6 cnt : 2
4 : 0  cnt : 0
r1: 6 cnt : 1
5 : 0  cnt : 0

可以看出 r1与r1 - l1的值没有问题 所以第30,31行的赋值语句

num[l1].r = r1;
num[l1].cnt = r1 - l1;

并没有起作用

这是因为什么呢 萌新求大佬解答

2022/10/9 22:18
加载中...