大雁轮回

本文分享了作者对于大雁魔方的实际使用感受,认为其顺滑且富有创新性,并对比了魔方小站的SQ1与东贤的二阶魔方,同时提到了一个关于左右脑思维的趣味测试。
大雁轮回

今天收货大雁,发现确实顺滑,有些感觉像缩小版的Rubik's Cube,的确中国人在发挥创新方面很是有一手,这里不仅仅体现了创新,而且有工艺、模具方面的种种......  

魔方小站的SQ1的确也物有所值,东贤的二阶没有想象的要好,可能是期望太高


在水木上看了一个有趣贴子


你看到了什么,请选择全选红色部分


据说,看到正面的惯用右脑思维,擅长艺术思维;
看到侧面的惯用左脑思维,擅长逻辑思维。






### 大雁叫声模拟的C语言实现 以下是基于问题描述的一个完整解决方案,用于计算最少需要多少只大雁来完成给定的“quack”叫声序列。该方案通过遍历字符串并维护状态数组的方式,判断每只大雁的状态以及它们发出的声音。 #### 解决思路 为了满足条件,可以定义五种状态分别对应于“quack”的五个字母:`q`, `u`, `a`, `c`, 和 `k`。当遇到一个新的`q`时,意味着可能有一只新的大雁加入;而每当到达一个`k`时,则表示当前这只大雁完成了它的鸣叫周期[^1]。 下面是具体实现: ```c #include <stdio.h> #include <string.h> #define MAX_BIRDS 1000 int countDucks(const char *str) { int state[MAX_BIRDS]; // 记录每只大雁的状态 (0: q, 1: u, 2: a, 3: c, 4: k) memset(state, -1, sizeof(state)); // 初始化为-1,表示未使用 int birdCount = 0; int activeBirds = 0; for (int i = 0; str[i] != '\0'; ++i) { char ch = str[i]; if (ch == 'q') { int idx = -1; // 查找是否有已完成的大雁可重用 for (int j = 0; j < birdCount && idx == -1; ++j) { if (state[j] == 4) { // 已经发完了 "k" idx = j; } } if (idx == -1) { // 需要新增一只大雁 if (birdCount >= MAX_BIRDS) return -1; idx = birdCount++; } state[idx] = 0; // 设置新状态为 "q" activeBirds++; // 增加活跃大雁数量 } else if (ch == 'u' || ch == 'a' || ch == 'c' || ch == 'k') { int nextState = 0; switch(ch) { case 'u': nextState = 1; break; case 'a': nextState = 2; break; case 'c': nextState = 3; break; case 'k': nextState = 4; break; } bool found = false; for (int j = 0; j < birdCount && !found; ++j) { if (state[j] + 1 == nextState) { // 找到上一状态匹配的大雁 state[j] = nextState; if (nextState == 4) activeBirds--; // 完成一次鸣叫减少活跃大雁数 found = true; } } if (!found) return -1; // 没有合适的大雁继续发声 } else { return -1; // 出现非法字符 } } // 检查所有大雁是否都已结束鸣叫 for (int i = 0; i < birdCount; ++i) { if (state[i] != 4) return -1; } return birdCount ? birdCount : -1; // 至少应有一个有效的大雁 } int main() { char input[1001]; scanf("%s", input); int result = countDucks(input); printf("%d\n", result); return 0; } ``` 上述代码实现了对输入字符串的解析,并按照规则统计所需的大雁数目。如果发现任何不符合规则的情况(如缺少某些字母或顺序错误),则返回 `-1` 表示无效输入[^4]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值