深搜
#include "stdio.h"
#include "string.h"
#define M 15
int n;
int ac[M][M];
int mark[M];
int max;
void DFS(int k, int tm, int z){ //k表示解决了第k题,tm表示解决第k题用的时间,z表示已经ac了多少题
int i;
mark[k] = 1;
if(max < z) max = z;
for(i=0; i<n; i++)
if(!mark[i] && ac[k][i]>=tm)
DFS(i, ac[k][i], z+1);
mark[k] = 0;
}
void main(){
int i, j;
freopen("in.txt", "r", stdin);
while(scanf("%d", &n)!=EOF){
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d", &ac[i][j]);
max = 0;
memset(mark, 0, sizeof(mark));
DFS(0, 0, 1);
printf("%d\n", max);
}
}

190

被折叠的 条评论
为什么被折叠?



