题目描述
澄澄在玩一个颜色转换游戏,游戏有四种颜色状态:红(1号色)、蓝(2号色)、绿(3号色)、黄(5号色)。初始时,澄澄的状态为红色(1号色)。每次收到指令后,颜色会按以下规则变化:
指令1:按红→黄→绿→蓝→红的顺序循环转换; 指令2:按红→蓝→绿→黄→红的顺序循环转换; 指令3:红↔绿、黄↔蓝互相转换; 现在给出 n 条指令,请你根据每条指令执行后的颜色,绘制 n 个横半径为 50、纵半径为 100 的实心椭圆。每个椭圆的圆心均位于距离图形中心100的位置,且呈放射性平均分布。
输入格式
第一行一个整数n,表示指令数量。(1≤n≤20)
第二行n个空格隔开的整数(1、2、3),表示具体指令。
输出格式
正确的图形。
输入/输出例子1
输入:
5
1 1 2 3 2
输出:
输入/输出例子2
输入:
8
2 3 1 3 2 3 1 1
输出:
参考答案
int t(int cur, int cmd) { if (cmd == 1) { if (cur == 1) return 5; if (cur == 5) return 3; if (cur == 3) return 2; if (cur == 2) return 1; } else if (cmd == 2) { if (cur == 1) return 2; if (cur == 2) return 3; if (cur == 3) return 5; if (cur == 5) return 1; } else if (cmd == 3) { if (cur == 1) return 3; if (cur == 3) return 1; if (cur == 2) return 5; if (cur == 5) return 2; } return cur; } int main() { int n; cin >> n; int cmdArr[20]; int color[20]; for (int i = 0; i < n; i++) { cin >> cmdArr[i]; } int now = 1; for (int i = 0; i < n; i++) { now = t(now, cmdArr[i]); color[i] = now; } p.picU(0).up(); for(int i=0;i<n;i++) { p.fd(100).ee(50,100,color[i]); p.bk(100).rt(360.0/n); } p.hide(); return 0; }题目链接:
https://v1.51goc.com/question/viewProgram/118865
(进去后要登录)