Cần sự giúp đỡ về bài tập Mã Nhị Phân Gray

Chào mọi người, mình đang gặp vấn đề thao tác xử lý mã nhị phân. Đề bài mình đang giải có dạng như sau
Input : Một số nguyên duy nhất n (1<=n<=16).
Output :
Ví dụ :

  • Nếu n = 2 thì in ra

00
01
11
10

+Nếu n = 3 thì in ra

000
001
011
010
110
111
101
100

Mình mong mọi người cho mình hướng giải quyết. Cảm ơn mọi người

Với n=2
Có thể thấy hàng chục được chia đều, còn hàng đơn vị thì đối xứng với nhau
với n=3
Hàng trăm được chia đều, hàng chục và đơn vị là đối xứng của n=2
hàng đơn vị sẽ lắp đầu đuôi của 01
hàng chục sẽ lắp đầu đuôi 0011
hàng trăm sẽ lắp đầu đuôi 00001111
Mình code sẽ lắp theo như thế :smile: thuật toán khác thì chờ thần gió vào thôi @Gio
topic này có thể giúp bạn nè :smile: ý tưởng cũng giống thế
http://diendan.congdongcviet.com/threads/t150274::bai-toan-ma-gray-huong-giai-quyet.cpp?p=504124#post504124

1 Like

Phương pháp sinh

#include "conio.h"
#include "stdio.h"
 
void main()
{
  clrscr();
  int x[30], n,i,k,l,r, dem;
 
  printf("\Nhap vao do dai cua day: ");
  scanf("%d",&n);
  // Khoi gan gia tri cua day
  for (i=0; i<n; i++)
        x[i] = 0;
  dem=0;
  while (i>=0)
  {
       dem++;
      for (i=0; i<n; i++)
        printf("%d  ",x[i]);
      printf("\n");
        i=n-1;
      while ((i>=0) && (x[i] == 1)) i--;
 
 
      if(i>=0)
      {
        x[i] = 1;
         for (int j= i+1; j<n; j++)
            x[j] = 0;
 
      }
 
  }
 
  printf("%d",dem);
  getch();
}

Đệ quy

#include "conio.h"
#include "stdio.h"
void nhiphan(int i);
int x[30],k,i;
static int n;
void printresult()
{
        for(int j=0; j<n; j++)
        printf("%d ",x[j]);
      printf("\n");
 
}
 
void main()
{
 
  clrscr();
  printf("\Nhap vao do dai cua day: ");
  scanf("%d",&n);
  nhiphan(0);
  getch();
}
 
void nhiphan(int i)
{
  int k;
    for ( k=0; k<=1; k++)
        {
            x[i] = k;
        if (i== n-1)
                printresult();
        else
            nhiphan(i+1);
 
        }
}

Nguồn: http://diendan.congdongcviet.com

2 Likes

Bạn ơi, sinh mã gray khác với sinh mã nhị phân

Sorry vì chưa đọc kỹ title. Vi thấy bạn ấy post topic cho ví dụ thấy quen quen. :smile:

1 Like

Sự giúp đỡ của mọi người thật sự giúp ích cho mình rất nhiều. Xin cảm ơn mọi người :smile:

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