01/10/2018, 13:25

Đếm số từ đối xứng trong chuỗi

Đề bài là kêu đếm xem trong chuỗi có bao nhiêu từ đối xứng và mình có ví dụ sau : cbabc abc iuoqteole qweroklu qqq qoklopnbgfred qwedsa
Và mình có đoạn code :

char doixung(char s[maxn])
{
	int n=strlen(s);
	for (int i=0;i<n/2;i++)
	{
		if (s[i]!=s[n-1-i])
		return 0;
	}
	return 1;
}

int demDX(char s[maxn])
{
	int demDX=0,n=strlen(s);
	for (int i=0;i<n;i++)
	{
		if (doixung(s))
		{
			demDX++;
		}
	}
	return demDX;
}

Thì nó trả về 0 mặc dù trong ví dụ đó mình đếm có 2 từ đối xứng
Không biết có bị sai chỗ nào không nữa ?

Dark.Hades viết 15:36 ngày 01/10/2018

Hàm doixung và DemDX nó không liên quan gì đến nhau nên nó mới như thế, và nó sẽ luôn bằng không hoặc luôn bằng >=1 nếu giá trị đầu tiên và cuối cùng giống/khác nhau

Bạn viết lại thuật toán để ý chỗ gọi hàm doixung nó không liên quan gì tới phần so sánh cả

hao vi viết 15:39 ngày 01/10/2018
int demDX(char s[maxn])
{
	int demDX=0,i=0;
	int n=strlen(s);
	while (i<=n/2)
	{
		if (s[i]!=s[n-1-i])
		{
			demDX=0;
		}
		else demDX++;
		i++;
	}
	return demDX;
}

Nếu mình sửa lại như vầy nó chỉ đếm đc 1

Ngọc Danh viết 15:33 ngày 01/10/2018
if (s[i]!=s[n-1-i])
{
	//bo qua ->sang vong lap ke tiep
	continue;
}
Bài liên quan
0