题目名称 |
骑士遍历 |
和谐俱乐部 |
农场派对 |
对称二叉树 |
存盘文件名 |
knight |
Beautiful |
party |
tree |
输入文件名 |
knight.in |
Beautiful.in |
party.in |
tree.in |
输出文件名 |
knight.out |
Beautiful.out |
party.out |
tree.out |
时限 |
1s |
1s |
1s |
1s |
内存限制 |
128MB |
128MB |
128MB |
128MB |
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[11][11],n; 4 bool b[11][11]; 5 int dx[8]={1,2,2,1,-1,-2,-2,-1};//搜索是从{1,-2}开始的 6 int dy[8]={-2,-1,1,2,2,1,-1,-2};//这里题目表述不清,但是增量一定要这样写!不然输出和答案不一 7 void search(int x,int y,int t) 8 { 9 if(t==n*n) 10 { 11 for(int j=n-1;j>=0;j--) 12 { 13 for(int i=0;i<n;i++) 14 cout<<a[i][j]<<‘ ‘; 15 cout<<endl; 16 } 17 exit(0);//讲解的时候老师说这里最好不要用强制退出,容易出错,再定义一个bool变量判断是否有路径就可以啦 18 } 19 for(int i=0;i<8;i++) 20 { 21 int p=x+dx[i],q=y+dy[i]; 22 if(p>=0&&p<n&&q>=0&&q<n&&!(b[p][q])) 23 { 24 b[p][q]=true; 25 a[p][q]=t+1; 26 search(p,q,a[p][q]); 27 b[p][q]=false; 28 } 29 } 30 31 } 32 int main() 33 { 34 //freopen("knight.in","r",stdin);(考试的时候一定记得这两行不要写错啦!!!) 35 //freopen("knight.out","w",stdout);(最好是一拿到题目就写,不怕一万就怕万一) 36 int x,y;cin>>n>>x>>y; 37 a[x][y]=1;b[x][y]=true; 38 search(x,y,1); 39 cout<<"-1";//本题数据有bug,会出现没有解决方案的情况,此时输出“-1” 40 return 0; 41 }
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,mi; 4 struct node{ 5 int a,b,l; 6 bool operator <(const node &y)const 7 { 8 return a<y.a; 9 } 10 }x[10001]; 11 int main() 12 { 13 //freopen("Beautiful.in","r",stdin); 14 //freopen("Beautiful.out","w",stdout); 15 cin>>n; 16 for(int i=1;i<=n;i++) 17 { 18 cin>>x[i].a>>x[i].b; 19 x[i].l=1; 20 } 21 sort(x+1,x+n+1); 22 for(int i=n-1;i>=1;i--) 23 { 24 mi=0; 25 for(int j=i+1;j<=n;j++) 26 { 27 if(x[i].b<x[j].b&&x[j].l>mi&&x[i].a<x[j].a)//一开始我没写x[i].a<x[j].a,因此错了两个点,所以说题目一定要看清楚! 28 { 29 mi=x[j].l; 30 } 31 } 32 x[i].l=mi+1; 33 } 34 mi=x[1].l; 35 for(int i=1;i<=n;i++) 36 if(x[i].l>mi)mi=x[i].l; 37 cout<<mi; 38 return 0; 39 }
原文:https://www.cnblogs.com/ljy-endl/p/11285923.html