华为机考HJ17坐标移动
生活随笔
收集整理的這篇文章主要介紹了
华为机考HJ17坐标移动
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
什么是tama的驚喜。
什么是tama的綁架。
我承認(rèn)了我是算力綁架犯,只會(huì)暴力破解,不會(huì)精妙算法。
先將數(shù)據(jù)分組,放在二維的vector中。
分別處理每一行,按特征剔除不符合的數(shù)據(jù)。
用到了數(shù)據(jù)覆蓋思想。此法也可用于提取不重復(fù)數(shù)據(jù)(去重)。
總之是sb方法暴力破解。
啊,我要欣賞一下其他大佬的方法。
我看到有人用memset,那是什么?我一會(huì)去學(xué)習(xí)一下。
#include<stdio.h>
#include<string.h>//AS賦負(fù)值,DW賦正值。/*觸發(fā)正值或負(fù)值,出現(xiàn)兩個(gè)case*/
//檢測(cè)ASDW后的數(shù)字,與上一個(gè)結(jié)果做運(yùn)算,第一個(gè)從零開始
//以分號(hào)做標(biāo)志
//不能出現(xiàn)除數(shù)字和ASDW以外的字符char input[10000],n[1000],m[1000],asb[1000][1000]={0};
int len,i=0,j=0,k=0,flag=0,p=0,x = 0,y = 0,dir,dist=0,distance[1000];
char A,S,D,W;
int rank[1000]={-1};
int dis_fen,dis_fen_2,dis_fen_3,dis_fen_4;
char char_list[10]={'0','1','2','3','4','5','6','7','8','9'};
int digital_list[10]={0,1,2,3,4,5,6,7,8,9},d[100];int main()
{while(scanf("%s\n",input) != EOF){len = strlen(input);//獲取字符串長(zhǎng)度for(i = 0; i <len ;i++)//獲取分號(hào)位置{if(input[i] ==';'){rank[j+1]=i;j++;}} int point=j;//二維數(shù)組,f分號(hào)分隔放在不同行//3<坐標(biāo)相減<4的放入 套:第一個(gè)是字母的放入 //if坐標(biāo)=3 看第二位是否是數(shù)字//else if坐標(biāo)=4 第二第三位是否是數(shù)字// for(i=0;i<point;i++)//分組{for(k = flag,j=0;((input[k] != ';')&&(input[k] != '\n'));k++){asb[i][j]=input[k];j++;}j=0;k++;flag=k;}for(i= 0;i<point;i++)//計(jì)算每行的長(zhǎng)度{distance[i] = rank[i+1]-rank[i]; }for(i=0;i<point;i++)//長(zhǎng)度不符合的剔除{if((distance[i]<3)||(distance[i]>4)){for(j=i;j<point;j++){for(k=0;k<distance[j+1];k++){asb[j][k]=asb[j+1][k]; } distance[j]=distance[j+1];}i--; point--;}} for(i=0;i<point;i++)//首位不符合的剔除{if((asb[i][0] !='A')&&(asb[i][0] !='S')&&(asb[i][0] !='D')&&(asb[i][0] !='W')){for(j=i;j<point;j++){for(k=0;k<distance[j+1];k++){asb[j][k]=asb[j+1][k]; } distance[j]=distance[j+1];}i--; point--;}} for(i=0;i<point;i++) {if((asb[i][1]<'0')||(asb[i][1]>'9'))//剔除第二位不是數(shù)字的{for(j=i;j<point;j++){for(k=0;k<distance[j+1];k++){asb[j][k]=asb[j+1][k]; } distance[j]=distance[j+1];}i--; point--;} else{ if(distance[i]==4){if((asb[i][2]<'0')||(asb[i][2]>'9'))//剔除第三位不是數(shù)字的{for(j=i;j<point;j++){for(k=0;k<distance[j+1];k++){asb[j][k]=asb[j+1][k]; } distance[j]=distance[j+1];}i--; point--;} }}}//仿照單片機(jī)進(jìn)行表查找for(i=0;i<point;i++){if(distance[i]==3)//個(gè)位數(shù)距離{for(j=0;j<10;j++){if(asb[i][1]==char_list[j]){d[i]=digital_list[j];}}}else//十位數(shù)距離{for(j=0;j<10;j++){if(asb[i][1]==char_list[j]){d[i]=digital_list[j]*10;}}for(j=0;j<10;j++){if(asb[i][2]==char_list[j]){d[i]=d[i]+digital_list[j];}}}}for(i=0;i<point;i++){switch(asb[i][0]){ case 'A': { x =x-d[i];break;}case 'S': {y =y-d[i];break;}case 'D': {x = x+d[i];break; }case 'W':{y = y+d[i];break;}}}printf("%d,%d",x,y); }}
總結(jié)
以上是生活随笔為你收集整理的华为机考HJ17坐标移动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 201953°汾酒集团20年封藏原浆47
- 下一篇: 界面怎么使用pip_从零开始学Pytho