OJ1070: 小汽车的位置(C语言)
題目描述
有一輛智能小車,最初(時間為0)的位置為(0,0),我們想知道它最后的位置。小車以每小時10公里的速度向北移動(以北為y軸正向,以東為x軸正向)。小車會受到一系列依照時間戳記排序的命令,1表示“向左轉”,2表示“向右轉”,3表“停止”。每個命令的前面有一個時間戳記,所以我們知道該命令是何時發出的。最后一個命令一定是“停止”。我們另外假設,這輛小車非常靈活,它可以在瞬間轉彎。
以下列輸入為例。小車在時間為5的時候收到一個“向左轉”的命令1,在時間10收到一個“向右轉”的命令2,在時間15收到一個“停止”的命令3。那么在最后時間15的時候,小車的位置將在(-50,100)。程序只要求輸出小車最后的位置,第一個整數是x坐標,第二個整數是y坐標。
輸入
輸入包含多個命令,每個命令由整數time和command組成,表示在時刻time發出命令command。command的取值范圍1-3,含義如上所述。
輸出
輸出占一行,包含兩個整數,表示小車的最終位置。兩個整數之間由空格隔開。
樣例輸入 Copy
5
1
10
2
15
3
樣例輸出 Copy
-50 100
提示
此題信息量大,考查內容較為綜合。
(1)數字化??蔀樗膫€方向編號,自向北開始,逆時針將4個方向依次編號為0,1,2,3。當接到向左轉命令,方向號增1,向右轉則方向號減1。為避免出現負數或大于3的情況,可對4取模。
代碼轉載自青梅煮茶1111
#include<stdio.h> int main() {int x,y,t1,t2,c,p,d;x=y=p=d=0;while(scanf("%d%d",&t1,&c)){switch(d){case 0:y+=(t1-p)*10;break;case 1:x-=(t1-p)*10;break;case 2:y-=(t1-p)*10;break;case 3:x+=(t1-p)*10;break;}if(c==3)break;else if(c==1)d++;elsed--;d=(d+4)%4;p=t1;}printf("%d %d\n",x,y);return 0; }總結
以上是生活随笔為你收集整理的OJ1070: 小汽车的位置(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: visual c++ 技术资料(网络收集
- 下一篇: 原来国家的名字可以如此的浪漫~~!