题意:
v< ^>代表上下左右四个方向,输入的数字表示转动的时间,每秒转动一次,求所给出的是顺时针旋转还是逆时针,如果无法判断,输出undefined。
思路:
直接暴力,分别列举上下左右为起始点的情况,把顺时针逆时针的四个符号按转动次序分别存入两个字符数组中,按输入的数字%4与其下标进行对比,判断是哪种旋转方式,如果数字既符合顺时针,又符合逆时针,则是第三种情况.
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
char s1[10],s2[10],shun[10],ni[10];
scanf("%s %s",s1,s2);
if(s1[0]=='^') //上
{
shun[1]='>',shun[2]='v',shun[3]='<'; //顺时针
ni[1]='<',ni[2]='v',ni[3]='>'; //逆时针
}
if(s1[0]=='>') //右
{
shun[1]='v',shun[2]='<',shun[3]='^';
ni[1]='^',ni[2]='<',ni[3]='v';
}
if(s1[0]=='v') //下
{
shun[1]='<',shun[2]='^',shun[3]='>';
ni[1]='>',ni[2]='^',ni[3]='<';
}
if(s1[0]=='<') //左
{
shun[1]='^',shun[2]='>',shun[3]='v';
ni[1]='v',ni[2]='>',ni[3]='^';
}
int n;
scanf("%d",&n);
int m=n%4;
if(s1[0]==s2[0]) //开始和结尾为同一字符
printf("undefined\n");
else if(s1[0]=='^')
{
if(shun[m]==s2[0]&&s2[0]!=shun[2]) //判断是顺时针还是逆时针并且判断顺逆是否一致
printf("cw\n");
else if(ni[m]==s2[0]&&s2[0]!=ni[2])
printf("ccw\n");
else
printf("undefined\n");
}
else if(s1[0]=='>')
{
if(shun[m]==s2[0]&&s2[0]!=shun[2])
printf("cw\n");
else if(ni[m]==s2[0]&&s2[0]!=ni[2])
printf("ccw\n");
else
printf("undefined\n");
}
else if(s1[0]=='v')
{
if(shun[m]==s2[0]&&s2[0]!=shun[2])
printf("cw\n");
else if(ni[m]==s2[0]&&s2[0]!=ni[2])
printf("ccw\n");
else
printf("undefined\n");
}
else if(s1[0]=='<')
{
if(shun[m]==s2[0]&&s2[0]!=shun[2])
printf("cw\n");
else if(ni[m]==s2[0]&&s2[0]!=ni[2])
printf("ccw\n");
else
printf("undefined\n");
}
}