Kiểm tra trong dãy a có tồn tại đoạn con gồm các phần tử liên tiếp có tổng bằng s hay không

Cho dãy a gồm n số nguyên. Các số nguyên được đánh số thứ tự từ 1 đến n. Số thứ i có giá trị là ai. Hãy viết chương trình tìm kiểm tra trong dãy a có tồn tại đoạn con gồm các phần tử liên tiếp có tổng bằng s hay không? Ở bộ số: 10 16 8 2 13 27 4 9, đáng lẽ phải in ra 2 nhưng lại in ra 1???

#include <iostream>
using namespace std;
int main() {
	int s, n,dem=0,tong=0,z=0,a[100];
	cout << "Nhap N= ";
	cin >> n;
	cout << "Nhap s= ";
	cin >> s;
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	for (int i = 0; i < n; i++) {
		tong = a[i];
		for (dem = i + 1; dem < n; dem++) {
			if (tong==s){break;
			};
			tong = tong + a[dem];
			if (tong == s)
			{
				z++;
				break;
			};
		};
	};
	cout << z;
	return 0;
}

Bạn cho tụi mình đầy đủ thông tin được không ạ. Đây mới chỉ có các phần tử trong mảng, còn thiếu n và s nữa ạ.

1 Like

quên, ahihi, n=8, s=10

Nó không nhận số 10 (phần tử đầu tiên) của dãy mẫu.
Trong vòng lặp lồng (2) bạn có gọi 2 lần break. Lần break thứ nhất đã phủ nhận số 10 mà không tăng biến z.

5 Likes

ờ ha, quên quên, ahihi

thấy flow cứ sai sai như nào ấy nhỉ :thinking:

4 Likes

Chà, += biến mất đâu rồi ấy nhỉ?

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?