📄 大作业.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
#define max 100
typedef struct AdjType
{
int adj;
}sx[max][max],dx[max];
///////////////
void creat(sx s,dx D,int n)
{
int i,j;
for(i=1;i<=n;i++)
{
D[i].adj=0;
for(j=1;j<=n;j++)
s[i][j].adj=0;
}
}
/////////////
void techer_speciality(sx s,int i,int k)
{
s[i][k].adj=1;
}
//////////////
int serch(int i,int j,sx s,int n)//
{
for(;j<=n;j++)
if(s[i][j].adj==1)break;
return(j);
}
/////////
int serch_error(sx s,dx D,int n,int k[])
{
int t;
for(int j=1;j<=n;j++)
if(k[j]==0)
for(int i=1;i<=n;i++)
if(s[i][j].adj==1)
{
if(D[i].adj==0)return 0;
t=D[i].adj;D[i].adj=j;k[t]=0;return 1;
}
return 0;
}
/////////////////
void anpai(dx D,int n,sx s)
{
int c[max]={0},j, js, p=0,t;
static int k[max]={0};
for(int i=1;i<=n;i++)
if(D[i].adj==0)
{j=1;
while(1)
{
js=serch(i,j,s,n);
if(js<=n)
{
c[p++]=js;//保存从serch里返回的教师专长
if(k[js]<=0)
{
D[i].adj=js;k[js]=i;p=0;break;
}
else {j=js;j++;}
}
else {
//if(js>n)
if(p>1)p=p-2;else p=p-1;
t=k[c[p]];
j=c[p]+1;
while(1)
{
js=serch(t,j,s,n);
if(k[js]<=0&&js<=n)
{
D[t].adj=js;k[js]=t;D[i].adj=c[p];k[c[p]]=i;p=0;break;
}
else if(js<=n)j++;
else {
p++;
if(c[p]==0)
{
D[i].adj=0;if(serch_error(s,D,n,k))anpai(D,n,s);break;
}
t=c[p];j=c[p]+1;
}//while
}
break;
}
}//while
}//if
}
/////////////////
void display(dx D,int n)
{
for(int i=1;i<=n;i++)
cout<<i<<":"<<D[i].adj<<" ";
}
/////////////////
void edit(sx s, int n)
{int k,i;
cout<<"请输入要修改的老师:"<<endl;
cin>>i;
cout<<"第"<<i<<"个老师的专长科目是:"<<endl;
for(k=1;k<=n;k++)
{if(s[i][k].adj==1)
cout<<k<<'\n';
}
cout<<"输入你要修改的科目:"<<endl;
do {
cin>>k;
if(s[i][k].adj==1)
s[i][k].adj=0;
else s[i][k].adj=1;
}while(k);
cout<<"修改后第"<<i<<"个老师的专长科目是:"<<endl;
for(k=1;k<=n;k++)
{if(s[i][k].adj==1)
cout<<k<<'\n';
}
}
void main()
{
sx s;dx D;int n,k;
cout<<"请输入课程数n:\n";
cin>>n;
creat(s,D,n);
cout<<"请输入教师专业特长编号(1-"<<n<<")输入0结束:\n";
for(int i=1;i<=n;i++)
{
cout<<"教师编号"<<i<<":";
do {
cin>>k;
s[i][k].adj=1;//techer_speciality(s,i,k);for(k=1;k<=n;k++)cout<<s[i][k].adj<<" ";
}while(k);
}
edit(s, n);
anpai(D,n,s);
display(D,n);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -