Do thời gian không có nhiều nên mình không thể sửa code của bạn được, mình chỉ post lên phần bài làm của mình cho bài này thôi. Ý tưởng chính là tạo nên
một danh sách vòng, sau đó tháo dần các phần tử của nó ra.
PHP Code:
#include "stdio.h"
#define MAX 100
int next[MAX];
int last, current;
int n, m, i, j;
void input()
{
printf("\nXin nhap vao n: ");scanf("%d",&n);
printf("\nXin nhap vao m: ");scanf("%d",&m);
}
void init()
{
for(i=1; i<=n; i++) next[i]= i+1;//khoi tao danh sach gom n phan tu
next[n]=1; //tuong trung cho n nguoi
//gia tri cua moi phan tu la dia chi
//phan tu sau no (tua kieu nguoi no
//cam tay nguoi tiep theo)
}
void main()
{
input(); //nhap vao input cua bai toan
//o bai nay la so nguoi va so luot loai
init();
current=1; // bien nay tuong trung cho nguoi hien tai ta dem den
last=0; // bien nay tuong trung cho nguoi truoc nguoi hien tai
for(i=1; i<=n; i++) // thuc hien n lan
{
for(j=1; j<m; j++) // thuc hien m-1 lan
{
last= current;
current= next[current]; // chuyen sang nguoi tiep theo
}
//da xac dinh duoc nguoi can loai bo
printf("%d- ",current);
current= next[current];// loai bo nguoi do ra khoi danh sach
next[last]= current;
}
}