01/10/2018, 17:45
Tối ưu thuật toán số thuận nghịch
#include<iostream>
using namespace std;
int main()
{
char a[100];//chuoi
cout << "enter a number with the number of digit is odd: ";
cin >> a;
int count = -1;//bien dem s o ky tu
for (int i = 0; i < strlen(a); i++)
{
count++;
}
//cout << count;
int k;
k = (count - 2) / 2;
int m = 0,couting=0;
while (m != (k+1))
{
if (a[m] == a[count - m])
couting++;//bien dem
m++;
}
if (couting == (k+1))
cout << a << " is Reversible number." << endl;//so nghich dao
else
cout << a << " is not Reversible number." << endl;
system("pause");
return 0;
}
mình có suy nghĩ ra cách làm tìm n có phải số thuận nghịch không vd 33533 là số thuận nghịch. không biết có cách nào hay và tối ưu hơn không?
Bài liên quan
Chuỗi C kết thúc bằng ‘\0’, strlen cũng dựa trên cái này thôi.
Nếu bạn làm kiểu chuỗi đối xứng thì nên cho một index trái và một index phải, rồi để chúng gặp nhau sẽ hay hơn. Và còn một bước nữa phải làm trước hết
Đoạn rất rất rất không tối ưu rồi.
:)) tại sao vậy bạn , mình mới học , đoạn đó để đếm số ký tự ấy
Hàm
strlen()
đã trả về độ dài (số kí tự) của chuỗi rồi, việc gì tính toán thêm nữa!?Thì bạn muốn tối ưu cơ mà đấy, strlen cũng chỉ duyệt đến ‘\0’ mà thôi.
Để cho đúng thì không thể chỉ lấy strlen() mà được (lưu ý là số nhé, không phải chuỗi) bởi vậy phải có một bước lọc.