首页 > 代码库 > 【NOIP2014模拟赛No.1】我要的幸福
【NOIP2014模拟赛No.1】我要的幸福
OJ题号:ZHOJ1297
思路:搜索。
先预处理注定不能走的路径,然后dfs可以走的路径。
1 #pragma GCC optimize ("O2") 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cctype> 5 const int N=1001; 6 int n,m,len,a[N][N]={{0}},path[N<<1]; 7 int getint() { 8 register char ch; 9 while(!isdigit(ch=getchar()));10 register int x=ch^‘0‘;11 while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^‘0‘);12 return x;13 }14 void printpath() {15 for(int i=0;i<len;i++) printf("%d ",path[i]);16 puts("");17 }18 void dfs(int x,int y) {19 if(!a[x][y]) return;20 path[x+y]=a[x][y];21 if((x+y+1)==len) {22 printpath();23 exit(0);24 }25 if((x+1)==n) {26 dfs(x,y+1);27 return;28 }29 if((y+1)==m) {30 dfs(x+1,y);31 return;32 }33 if(a[x+1][y]<a[x][y+1]) {34 dfs(x+1,y);35 dfs(x,y+1);36 }37 else {38 dfs(x,y+1);39 dfs(x+1,y);40 }41 }42 int main() {43 n=getint();44 m=getint();45 len=n+m-1;46 for(register int i=0;i<n;i++) {47 for(register int j=0;j<m;j++) {48 a[i][j]=getint();49 }50 }51 for(register int i=n-1;i>=0;i--) {52 for(register int j=m-1;j>=0;j--) {53 if((i==(n-1))&&(j==(m-1))) continue;54 if(!a[i+1][j]&&!a[i][j+1]) a[i][j]=0;55 }56 }57 if(a[n-1][m-1]) dfs(0,0);58 puts("Oh,the life is too difficult!");59 return 0;60 }
【NOIP2014模拟赛No.1】我要的幸福
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。