Giúp sửa code tìm đoạn con dài nhất chứa các phần tử dương

p89
mọi người giúp em với khi em thử ở ngoài thì thấy đúng nma vào codefun thì chỉ đúng đc 3 test

#include <iostream>

using namespace std;

int
main ()
{
  long long n;
  int dem = 0;
  int temp;
  int tem=0;
  cin >> n; 
  int a[10000];
  for (int i = 0; i < n; i++)
    {
      cin >> a[i];
    }
  for (int t = 0; t < n; t++)
    {
      if (a[t] >= 0)
	{
	  dem += 1;
	  temp = dem;
	};
      if (a[t] < 0 | t == n - 1)
	{
	  if (temp >= tem)
	    {
	      tem = temp;
	      dem = 0;
	      temp = 0;
	    }

	}
    }
  cout << tem;
}

em cảm ơn

Toán tử bit?
Dư 1 biến.

2 Likes

Bạn hãy nếu ý tưởng về đoạn code này xem?
Làm sao người khác biết bạn nghĩ gì?

2 Likes

em nghĩ là đi đến từng phần tử 1 trong mảng , nếu nó dương thì cho biến đếm1 +=1 , khi gặp 1 số âm thì cho đếm 2 = đếm 1(so sánh nếu đếm 2<đếm 1 thì lấy) rồi reset biến và đếm 1 cùng = 0. cuối cùng là cout đếm 2

    for (int t = 0; t < n; t++) {
        if (a[t] >= 0) {
            dem += 1;
            temp = dem;
        };
        if (a[t] < 0 || t == n - 1) { // chỗ này sửa lại như thế này thì vẫn chưa đủ
            if (temp >= tem) {
                tem = temp;
                dem = 0; // dòng này
                temp = 0; // và dòng này, nếu vừa dãy vừa chốt không phải dãy tốt nhất thì lát nữa gặp tiếp lại đếm thêm?
            }
        }
    }

với cái ý tưởng gặp số âm thì chốt sổ, lúc này sẽ cập nhật biến kết quả nếu kết quả vừa chốt tốt hơn
nhưng dù kết quả có tốt hơn kết quả đã có hay là không thì vẫn phải reset biến đếm chứ

và mình cũng không biết vì sao lại cần đến 2 biến demtemp

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