摘要:
View Code 1 /* 2 最短路: 3 floyd倒着用 4 优秀代码中这样判断 5 若: path[i][j]>path[i][k]+path[k][j]则 这不是 最短路 是 impossible 6 若:path[i][j]==path[i][k]+path[k][j] 则 从 i到 j 用不着直接路径 7 */ 8 #include<iostream> 9 #include<cstdio>10 #include<cstring>11 using namespace std;12 13 int path[105][105];14 bool 阅读全文
摘要:
View Code 1 /* 2 思路: 3 我们可以对棋盘进行横向切割和竖向切割 4 s[n][x1][y2][x2][y2]表示:棋盘的左上角坐标是(x1,y1),右下角坐标 5 为(x2,y2) 把这个棋盘分割成 n 一块 6 横向分割: 7 可以在 a处分割 (x1=<a<x2) 比较是 留哪一个继续分割 8 for(a=x1;a<x2;++a) 9 { 10 r=min(r,min(slove(num-1,x1,y1,a,y2)+sum(a+1,y1,x2,y2),//对上边递归继续分割 11 ... 阅读全文