为什么n匹配不了case中的值

img

img

img

img

img


答案应该是11 可为什么是2 刚刚我把问题一步步拆解到那样了 发现错了 不是我想要的 现在问题出在哪

你把代码贴出来 好修改

动态规划解决。

#include <stdio.h>

#define INF 9999999

int main() {
    int dp[2022]; // dp数组,用于保存拼出每个数字需要的最少卡片数量

    // 初始化dp数组
    dp[0] = 0;
    for (int i = 1; i <= 2021; i++) {
        dp[i] = INF;
    }

    int cards[10] = {2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021}; // 每种卡片的数量

    for (int num = 1; num <= 9; num++) {
        for (int i = num; i <= 2021; i++) {
            dp[i] = dp[i] < (dp[i - num] + 1) ? dp[i] : (dp[i - num] + 1); // 更新dp[i]
        }
    }

    int maxNum = 0;
    for (int i = 1; i <= 2021; i++) {
        if (dp[i] != INF && cards[i % 10] >= dp[i]) {
            maxNum = i;
        }
    }

    printf("小蓝可以从1拼到%d\n", maxNum);

    return 0;
}

你代码逻辑梳理清楚,你这n循环前面10次是XX--,后面99990次都是打印error

分析:当你在循环中使用一个变量n时,它的值是在每次循环迭代时动态变化的,因此在使用switch(n)时可能会出现问题。这是因为switch语句要求在case标签中指定常量表达式,而动态变化的变量n在每次循环迭代时其值都可能不同,因此无法直接用于switch语句中。

为了解决这个问题,你可以考虑使用其他方法来控制循环中的不同情况,例如使用多个if/else语句,来映射不同的变量值和相应的操作。

建议代码截图给完整一些。

第258行:if(10 <= n < 100) 这样写有问题,应修改为:if (10 <= n && n < 100)

感觉逻辑有点乱,建议先理清思路

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

根据您的描述,您遇到了在使用adb命令获取安卓页面节点时偶尔出现目标app页面节点空白的问题。您提到重启app或切换到主页后再打开app可以解决该问题,因此想知道是否有可能通过重启UI Automator Viewer来重新获取节点。

UI Automator Viewer是用于查看和分析安卓应用程序的UI布局和元素的工具,并不直接与节点加载相关联。因此,重启UI Automator Viewer本身并不会对节点加载产生影响。

您遇到的问题可能是由于页面加载或节点解析时的临时错误导致的。这可能与网络连接、页面加载速度、节点解析算法等因素有关。

解决这个问题的方法可以尝试以下几点:

  1. 检查网络连接:确保您的设备处于良好的网络连接状态,以确保页面加载正常。
  2. 增加延时:在获取节点之前,添加适当的延时,以确保页面加载完成。可以使用adb命令的"sleep"选项或在脚本中添加等待时间的方法来实现。
  3. 使用重试机制:在获取节点失败时,可以使用重试机制,多次尝试获取节点,直到成功为止。这可以通过循环结构和条件判断来实现。
  4. 使用不同的节点获取方法:尝试使用不同的节点获取方法,例如使用XPath表达式或其他特定的节点定位方法,以提高节点获取的准确性和稳定性。

总的来说,通过增加延时、使用重试机制和尝试不同的节点获取方法,可以提高获取节点的成功率和稳定性,以解决您遇到的问题。

希望这些建议对您有帮助!如果您有任何其他问题,请随时提问。

控制台有输出行的数量限制,你把循环变量n的结束条件改小点看看