摘要:
典型的八皇后问题,用回溯遍历每一种情况,当前格子能放皇后就放,直到剩余皇后数量为0输出情况。而判断是否能放就是判断当前位置的横,竖,左斜,右斜是否有皇后,横竖都好判断,而左斜的位置index的和相等,右斜的位置index差相等。 `#include<stdio.h> include<string.h 阅读全文
摘要:
遍历整个二维数组,将数字相同的都入队,然后标记已经处理过,接着开始处理,判断每个位置是否都比相邻的不同高的位置高或低,就可以判断这些数是否为山谷或山峰 `#include include int que[1000007][3]; int m1[8]={-1,-1,-1,0,0,1,1,1},m2[8 阅读全文
摘要:
通过回溯搜索满足第一种维他命的情况,然后用这种情况检验其余维他命是否满足 `#include int v,lst[27],g,lst_v[17][27],p=0,f=1; int index[17]={0}; int My_sum(int n){ int sum=0; for(int i=0;i<g 阅读全文
摘要:
以每一个1为起点向外搜索,不断更新最近距离,如果不能更新则剪枝,不然会超时 `#include int n,m; char a; int m1[4]={-1,1,0,0},m2[4]={0,0,-1,1}; struct q1{ int i,j; int d=0; } q_bai[2000007]; 阅读全文
摘要:
题目说只有一个包围圈,所以除了与边界相连的0,其余0都在包围圈内,所以只要把边界遍历一遍,将与边界相邻的0都标记出来,剩下的0都是要转换成2的 `#include struct hao{ int i,j; } que[1000007]; int head=0,tail=0; int main(){ 阅读全文
摘要:
题目意思很简单,就是把一个数按照字典序拆分,很显然可以用回溯,把每种可能都遍历一遍,遇到不可能的情况就剪枝 `#include int lst[10]={0}; int n,sum=0; void solve(int res,int p){ if(res0&&lst[1]!=n){ for(int 阅读全文