下载建设银行官方网站下载,网站模块介绍,公司网站怎么设计,工厂招工信息话不多说#xff0c;直接看题#xff1a; 显然#xff0c;我们直接用深搜#xff0c;我们可以先把空位用结构体存#xff0c;然后打表存小方块#xff0c;再用数组存行列。
下面是AC代码#xff1a;
#includebits/stdc.h
using namespace std;
int a[12][12];…话不多说直接看题 显然我们直接用深搜我们可以先把空位用结构体存然后打表存小方块再用数组存行列。
下面是AC代码
#includebits/stdc.h
using namespace std;
int a[12][12];
int biao[20][20]{{0,0,0,0,0,0,0,0,0,0},{0,1,1,1,2,2,2,3,3,3},{0,1,1,1,2,2,2,3,3,3},{0,1,1,1,2,2,2,3,3,3},{0,4,4,4,5,5,5,6,6,6},{0,4,4,4,5,5,5,6,6,6},{0,4,4,4,5,5,5,6,6,6},{0,7,7,7,8,8,8,9,9,9},{0,7,7,7,8,8,8,9,9,9},{0,7,7,7,8,8,8,9,9,9}};
int ck[20][20];
int lie[12][12],hang[12][12];
struct node{int x,y;
}b[200];
int cnt;
void print(void){for(int i1;i9;i){for(int j1;j9;j){couta[i][j] ;}coutendl;}
}
void dfs(int deep){if(deepcnt){print();return ;}else{for(int i1;i9;i){if(lie[b[deep].y][i]0hang[b[deep].x][i]0ck[biao[b[deep].x][b[deep].y]][i]0){lie[b[deep].y][i]1;a[b[deep].x][b[deep].y]i;hang[b[deep].x][i]1;ck[biao[b[deep].x][b[deep].y]][i]1;dfs(deep1);lie[b[deep].y][i]0;hang[b[deep].x][i]0;ck[biao[b[deep].x][b[deep].y]][i]0;}}}
}
int main(){for(int i1;i9;i){for(int j1;j9;j){cina[i][j];if(a[i][j]!0){lie[j][a[i][j]]1;hang[i][a[i][j]]1;ck[biao[i][j]][a[i][j]]1;}else{b[cnt].xi;b[cnt].yj;}}}dfs(1);
}
值得注意的我们其实可以三个判断容器排个序选出约束条件最多的先枚举这样虽然复杂度还是一样但是按照这个顺序就可以更快的确定约束条件多的从而减少不必要的递归次数。
我们可以举个例子 接题 下面为分析
我们写出4与7的组合然后分段计算即可下面是AC代码
#includebits/stdc.h
using namespace std;
#define int long long
long long l,r;
long long a[7000];
int cnt;
bool cmp(long long a,long long b){return ab;
}
void dfs(int deep){if(deep500000000000LL) return ;a[cnt]deep;dfs(10*deep4);dfs(10*deep7);
}
signed main(){cinlr;dfs(0);sort(a1,acnt,cmp);int l1lower_bound(a1,acnt,l)-a;int r1lower_bound(a1,acnt,r)-a;long long sum0;if(l1!r1){sum(a[l1]-l1)*a[l1];for(int il11;ir1-1;i){sum(a[i]-a[i-1])*a[i];}sum(r-a[r1-1])*a[r1];}else{suma[r1]*(r-l1);}coutsum;
}
看道有趣的题 可以用并查集最后判断与下表面连的点与上表面连的点是否在同一个集合这里采用BFS先把与上表面相连的点放队里在判断与他们相连的点下面是AC代码
#includebits/stdc.h
using namespace std;
int t,n,h,r,b[1010];
struct node{int x,y,z;
}a[1010];
int check(node a,node b){if(pow(a.x-b.x,2)pow(a.y-b.y,2)pow(a.z-b.z,2)4*pow(r,2)){return 1;}return 0;
}
int main(){cint;while(t--){memset(b,0,sizeof(b));queuenode q;int f0;scanf(%d%d%d,n,h,r);for(int i1;in;i){scanf(%d%d%d,a[i].x,a[i].y,a[i].z);if(ra[i].zh){q.push(a[i]);b[i]1;}}while(!q.empty()){node sq.front();q.pop();if(s.z-r0){f1;break;}for(int i1;in;i){if(b[i]0check(a[i],s)1){q.push(a[i]);b[i]1;}}}if(f) coutYesendl;else coutNoendl;}
}