Chương trình này không in ra được kết quả, em đã tìm không biết sai ở chỗ nào ? Mong anh, chị giúp đỡ , xem giùm em!
hình ảnh:
absc|690x356
Chương trình của em :
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int Kttong(int tongTrai[], int k) // kiem tra xem tat ca tap hop con lap day hay chua
{
int r = true;
for (int i = 0; i < k; i++)
{
if (tongTrai[i] != 0)
r = false;
}
return r;
}
int THtong(int S[], int n, int tongTrai[], int A[], int k)
{
if (Kttong(tongTrai, k))
return true;
if (n < 0)
return false;
int res = false;
// ky thuat quay lui
for (int i = 1; i <= k; i++)
{
if (!res && (tongTrai[i] - S[n]) >= 0)
{
A[n] = i + 1;
tongTrai[i] = tongTrai[i] - S[n];
res = THtong(S, n - 1, tongTrai, A, k);
tongTrai[i] = tongTrai[i] + S[n];
}
}
return res;
}
int sum(int a[], int n, int s) // tinh tong day so
{
int i;
for(i = 0 ;i < n; i++)
s = s + a[i];
return s;
}
void chianhom(int S[], int n, int k)
{
if (n < k)
{
printf("\nKhong co nhom nao phu hop");
return;
}
int A[n], tongTrai[k];
for (int i = 0; i < k; i++)
tongTrai[i] = sum(S, n, 0) / k;
int res = (sum(S, n, 0) / k) && THtong(S, n - 1, tongTrai, A, k); // liet ke nhom nao có tong gan bang nhau
if (n - 1 <= res <= n + 1)
{
for (int i = 1; i <= k; i++)
{ printf("\nNhom %d la: ", i);
for (int j = 0; j < 8; j++)
if (A[j] == i + 1)
printf (" %d ", A[j]);
}
}
else
printf("\nKhong co nhom nao phu hop");
}
int main()
{
int S[]={4, 3 , 2 , 1 , 7, 9, 6, 5 ,1};
int n = sizeof(S) / sizeof(S[0]);
//printf("\n%d ",n);
int k = 3;
chianhom(S, n, k);
return 0;
}

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