c/c++语言开发共享回溯算法在寻找gradle生最低学期数中的应用

回溯算法在寻找gradle生最低学期数中的应用 我正在从包含的文件中获取输入

这是我的代码,所以你知道我已经完成了工作。 我的代码正在编译和执行,但没有显示完成课程的sems数。 请告诉我我在哪里做错了

#include #include #include #include #include char garbage[12][6]; char courseIdentifier[12][6],prereqIdentifier[12][5][6]; char semOffered[12]; bool done[12]; bool allDone(int); bool donePrereq(int,int); int main(void) { FILE *fp; fp = fopen("graduate.in","r"); int n,m,p; int i,j,k; for(i=0;i<12;i++) { strcpy(courseIdentifier[i],""); } for(i=0;i<12;i++) { for(j=0;j<5;j++) { strcpy(prereqIdentifier[i][j],""); } } fscanf(fp,"%d %d",&n,&m);// take n,m while(n != -1) { if( !(1<=n && n<=12) || !(2<=m && m<=6) ) { printf("Wrong input"); } for(i=0;i<n;i++) //the list of offered courses { fscanf(fp,"%s",garbage[i]); } for(i=0;i<n;i++) { fscanf(fp,"%s %c %d",courseIdentifier[i],&semOffered,&p);//the name of course, sem,no. of prereqs for(j=0;j<p;j++) { fscanf(fp,"%s",prereqIdentifier[i][j]); } } int sem=1; char semNow = 'F'; for(i=0;i<n;i++) { done[i]=false; } while(!allDone(n)) { int count=0; //while(count<=m) //{ for(i=0;i<n;i++) { if( (semOffered[i]==semNow || semOffered[i]=='B') && donePrereq(p,n)) { done[i] = true; count++; } } //} sem++; if(semNow=='F') { semNow='S'; } else if(semNow=='S') { semNow='F'; } } printf("minimum number of semesters = %dn",sem); fscanf(fp,"%d %d",&n,&m);// take n,m } return 1; } bool allDone(int n) { bool returnBool=true; int i; for(i=0;i<n;i++) { returnBool = returnBool && done[i]; } return returnBool; } bool donePrereq(int p,int n) { bool returnBool=true; int i,j; for(i=0;i<p;i++) { for(j=0;j<n;j++) { if(strcmp(prereqIdentifier[i][j],courseIdentifier[j]) ==0 ) { printf("prereq matchedn"); returnBool = (returnBool&&done[j]); } } } return returnBool; } 

    当您在此处扫描输入以获取有关每个提供的课程的信息时:

      fscanf(fp,"%s %c %d",courseIdentifier[i],&semOffered,&p); 

    &semOffered参数不正确。 您需要提供指向char的指针。 由于semOffered是一个char数组,因此您可能希望将其存储到索引位置:

      fscanf(fp,"%s %c %d",courseIdentifier[i],&semOffered[i],&p); 

    这不会修复您的程序,但它确实允许程序完成。

      以上就是c/c++开发分享回溯算法在寻找gradle生最低学期数中的应用相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/546474.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐