C 中基于用户输入的 For 循环

For Loops Based on User Input in C

我有不同的路径,这些路径在二维数组中预定义为 [seed][sequence],其中 'seed' 是路径 (0-255),'sequence' 是路径(0-49)。当比较的路径数量可能不同于 运行 运行?

时,有没有一种方法可以一次整齐地比较输入定义的路径数量

我的意见是如何收集的:

#define MAX 250 

int numUsers; //the number of users
int users[MAX][2]; //each user and their respective seed
int collisions = 0; //number of collisions

static inline void compareNumUsers(){
   printf("Enter the number of users: ");
   scanf("%d", &numUsers);
   printf("\n");
   for(int i = 0; i < numUsers; i++){
      printf("Enter the seed of user%d [0-255]: ", i+1);
      scanf("%d", &users[i][1]);
   }
}

最佳情况下答案不是一系列大小写切换语句

我希望有可能达到这样的效果:

(assume 3 given inputs)
for(int j = 0; j < pathLength; j++){
    if(paths[users[0][1]][j] == paths[users[1][1]][j] || paths[users[1][1]][j] == paths[users[2][1]][j] || paths[users[2][1]][j] == paths[users[0][1]][j])
        collisions++;
}

如果我说我在思考如何提出这个问题时没有感到困惑,那我就是在撒谎,所以如果您对某些事情感到困惑,请问我以确认我不会被冒犯。

比较也不一定要按照我提供的方式进行,这就是我目前的想法。

感谢任何帮助。提前谢谢你。

使用嵌套循环比较所有对。

for (int j = 0; j < pathlength; j++) {
    for (int i = 0, broken = 0; !broken && i < numUsers - 1; i++) {
        for (int k = i + 1; k < numUsers; k++) {
            if (paths[users[i][1]][j] == paths[users[k][1]][j]) {
                collisions++;
                broken = 1;
                break;
            }
        }
    }
}