排课表问题,实现下一个方案


#include<stdio.h>
#include <stdlib.h>
#define m 5
#define n 7
void menu()//菜单显示
{
    printf("***************课表系统菜单****************\n");
    printf("***************1.排课******************\n");
   
    printf("***************0.退出**********************\n");
}
void course(){    int c=1;
    srand(time(NULL));
        int a2[5][7]={0};
        int a1[5][7]={0};
        int i,j,x1,y1;
do{
    
    printf("%d班:\n",c);
     printf("    周一   周二   周三   周四   周五   周六   周天\n");
    x1=rand()%m;
    printf("%d\n",x1);
    y1=rand()%n;
    printf("%d\n",y1);
    a1[x1][y1]=1;
    a2[x1][y1]=1;
    for(i=0;i<5;i++)
    {
        for(j=0;j<7 ;j++)
        printf("%7d",a1[i][j]);
        printf("\n");
    }
    c++;
}while(c<=6);
printf("上机课表:\n"); 
for(i=0;i<5;i++)
    {
        for(j=0;j<7 ;j++)
        printf("%7d",a2[i][j]);
        printf("\n");
    }
    int q;
    printf("*************1.寻找下一个方案**************\n");
    printf("*************2.恢复到初始状态**************\n");
    printf("请选择\n");
    scanf("%d",&q);
    switch(q)
    {
    case 2:
    {
        exit(0);break;
    }
    case 1:
    {
    printf("下一个方案\n");    
    
    }

}

//课程表输出函数

int main()
{    menu();
  int k;
  scanf("%d",&k);
  switch(k)
  {
     case 0: 
     exit(0);break;
     case 1:
    {    course();
     break;
    }
  }
  return 0;
}

这是我的代码,下面是运行结果

img

img


如何实现下一个方案,就是把上机课表里的1往后移,应该是使用递归,求解答😭

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^