Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

You are not connected. Please login or register

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 1 trong tổng số 1 trang]

tranhanhuy

tranhanhuy

Thành Viên
Đề: lập biểu thức.
Vd: cho 1 mảng gồm có n số nguyên
với 2 dấu +, - sao cho a[0]?a[1]?a[2]?...?a[n-1] = N
thay 2 dấu + , - vào dấu ?
sử dụng đệ qui

Code:
#include <stdio.h>
#include <conio.h>
int TinhTong(int a[], int SoPhanTu, char DayPhepToan[50])
{
   int kq = a[0];
   for (int i=1; i<SoPhanTu; i++)
   {
      if (DayPhepToan[i-1]=='+')
      {
         
         kq += a[i];
      }
      else
      {
         
         kq -= a[i];
      }
   }
   return kq;
}
void TimCongTru(int a[], int SoPhanTu,int N, char DayPhepToan[50], int i, bool &KetThuc)
{
   if (i == SoPhanTu-1)
   {
      //ktra tong
      int kq = TinhTong(a,SoPhanTu,DayPhepToan);
      if (kq == N )
      {
         KetThuc = true;
         return;
      }
   }
   else
   {
      char PhepTinh[3] = "+-";
      for (int j=0; j<2; j++)
      {
         DayPhepToan[i] = PhepTinh[j];
         i++;
         TimCongTru(a,SoPhanTu,N,DayPhepToan, i,KetThuc);
         if (KetThuc == true)
         {
            return;
         }
         i--;
      }
   }
}
void Xuat(int a[], int SoPhanTu, int N, char DayPhepToan[])
{
   for (int i=0; i<SoPhanTu-1; i++)
   {
      printf("%d",a[i]);
      printf("%c",DayPhepToan[i]);
   }
   printf("%d=%d",a[SoPhanTu-1],N);
}
void main()
{
   int a[30] = {1,2,3};
   int N = 6;
   int SoPhanTu = 3;
   char DayPhepToan[50];
   bool KetThuc = false;
   TimCongTru(a,SoPhanTu,N,DayPhepToan,0,KetThuc);
   if (KetThuc == false)
   {
      printf("ko lap duoc bieu thuc");
   }
   else
   {
      Xuat(a,SoPhanTu,N,DayPhepToan);
   }
   getch();
}

http://taiachau.com

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

Permissions in this forum:
Bạn không có quyền trả lời bài viết