NC215079. 玩游戏
描述
输入描述
一行一个字符串,表示游戏中的方向键且保证数据只有W,A,S,D这四个字符。
输出描述
两个整数(用空格分开),表示按完这些方向键后游戏中的人物停留的位置。
示例1
输入:
WWWASSDW
输出:
4 0
说明:
第一次按W,游戏中的人物在(1, 0) ,按了一次W,向上走了一格。C++(clang++11) 解法, 执行用时: 48ms, 内存消耗: 3512K, 提交时间: 2021-03-10 22:17:40
#include<bits/stdc++.h> using namespace std; int main() { string str; long x=0,y=0,i=0,x1=0,x2=0,y1=0,y2=0; cin>>str; while(i<str.size()) { switch(str[i]) { case 'W':y1++,y+=y1,x1=0,x2=0,y2=0; break; case 'S':y2++,y-=y2,x1=0,x2=0,y1=0; break; case 'A':x1++,x-=x1,x2=0,y1=0,y2=0; break; case 'D':x2++,x+=x2,x1=0,y1=0,y2=0; break; } i++; } cout<<y<<' '<<x; return 0; }
C(clang11) 解法, 执行用时: 17ms, 内存消耗: 1272K, 提交时间: 2020-12-18 19:24:59
#include<stdio.h> int main() { char str[1000000]; int x=0,y=0,w,a,s,d,i=0; w=a=s=d=0; scanf("%s",str); do{ if(str[i]=='W'){w++;x=x+w;} if(str[i]=='A'){a++;y=y-a;} if(str[i]=='S'){s++;x=x-s;} if(str[i]=='D'){d++;y=y+d;} i++; if(str[i]!=str[i-1])w=a=s=d=0; }while(str[i]!='\0'); printf("%d %d",x,y); return 0; }