华宏mba,兔斯基官网,马报
一个小孩要做n道题,且这n道题难度不同。mp[i][j]代表做完第i道题后,再做第j道题的难度系数,每次做题难度系数不断上升,问最多做题数。
简单DFS,具体看代码:
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #define INF 0x3f3f3f3f 5 #define N 20 6 using namespace std; 7 int vis[N];//标记 8 int mp[N][N]; 9 int n; 10 int ans; 11 void DFS(int s,int len,int num){//s--下一道题,len--做题的数量,num--记录上一题的难度系数 12 int flag=0; 13 for(int j=0;j<n;j++){ 14 if(!vis[j]&&s!=j&&mp[s][j]>=num){//如果没有标记并且难度系数上升 15 vis[j]=1; 16 DFS(j,len+1,mp[s][j]); 17 vis[j]=0; 18 flag=1; 19 } 20 } 21 if(!flag)ans=max(ans,len); 22 } 23 24 int main(){ 25 while(~scanf("%d",&n)){ 26 ans=-1; 27 memset(vis,0,sizeof(vis)); 28 for(int i=0;i<n;i++){ 29 for(int j=0;j<n;j++) 30 scanf("%d",&mp[i][j]); 31 } 32 vis[0]=1; 33 DFS(0,1,0); 34 printf("%d\n",ans); 35 } 36 return 0; 37 }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论