900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > (算法练习)蓝桥杯——X星球居民小区的楼房全是一样的

(算法练习)蓝桥杯——X星球居民小区的楼房全是一样的

时间:2021-06-19 09:53:02

相关推荐

(算法练习)蓝桥杯——X星球居民小区的楼房全是一样的

要求:

/oj/contest2325_problem3.html

这题暂未AC,存个代码,有时间再来看看哪里的问题= =

#include <stdio.h>#include <math.h>#include <algorithm>using namespace std;int main(){int w,m,n;scanf("%d %d %d",&w,&m,&n);int numrecordlef[w];int numrecordrig[w];bool ans[w] = {false};int maxn = max(m,n);int minx = min(m,n);//int lef,rig;int signal = 0,pos = 0,path = 0;for(int i = 0;;i++){signal++;if(i*w+1<= minx && (i+1)*w >= minx){//在第i行 int linshinum = (i)*w+1;//printf("signal=%d\n",signal);if(signal%2 == 0){//偶数行,逆序 //printf("逆序\n");for(int s = w-1;s>=0;s--){numrecordlef[s] = linshinum++;//printf("%d\n",numrecord[lef][s]);if(numrecordlef[s] == minx){ans[s] = true;//printf("s=%d\n",s);}}}else{//奇数行,正序 //printf("正序\n");for(int s = 0;s<w;s++){numrecordlef[s] = linshinum++;//printf("%d\n",numrecord[lef][s]);if(numrecordlef[s] == minx){ans[s] = true;//printf("s=%d\n",s);}}}for(int j = i;;j++){signal++;pos++; //记录走过多少行 if(j*w+1<= maxn && (j+1)*w >= maxn){int linshinumm = (j)*w+1;if((signal-1)%2 == 0){//偶数行,逆序 //printf("逆序\n");for(int s = w-1;s>=0;s--){numrecordrig[s] = linshinumm++;if(numrecordrig[s] == maxn){ans[s] = true;//printf("s=%d\n",s);}//printf("%d\n",numrecord[rig][s]);}}else{//奇数行,正序 //printf("正序\n");for(int s = 0;s<w;s++){numrecordrig[s] = linshinumm++;if(numrecordrig[s] == maxn){ans[s] = true;//printf("s=%d\n",s);}//printf("%d\n",numrecord[rig][s]);}}break;}}break;}}int t1,t2,ss = 0;for(int i = 0;i <w;i++){if(ans[i] == true && ss == 0){t1 = i;//printf("%d\n",t1);ss++;}else if(ans[i] == true && ss >0){t2 = i;//printf("%d\n",t2);ss++;}}if(ss == 2){printf("%d",pos-1+abs(t1-t2));}else{printf("%d",pos-1);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。