你好,我在这里看了一点这个话题,但我发现没有什么可以帮助我。
我需要一个用Python或C语言编写的程序,它将为我提供所有可能的a和b的组合,这些组合将满足n从0到10的n=2*a+b的要求。a、b和n是整数。
例如,如果n=0,则a和b都必须为0。对于n=1,a必须为零,b必须为1,对于n=2,a可以为1,b=0,或者a=0,b=2,等等。
我不太擅长编程。我做了这个:

#include <stdio.h>

int main(void){
    int a,b,n;
    for(n = 0; n <= 10; n++){
        for(a = 0; a <= 10; a++){
            for(b = 0; b <= 10; b++)
                if(n == 2*a + b)
                    printf("(%d, %d), ", (a,b));
        }
        printf("\n");
    }
}

但它总是得到这样奇怪的结果:
(0,-1079628000),
(1,-1079628000),
(2,-1079628000),(0,-1079628000),
(3,-1079628000),(1,-1079628000),
(4,-1079628000),(2,-1079628000),(0,-1079628000),
(5,-1079628000),(3,-1079628000),(1,-1079628000),
(6,-1079628000),(4,-1079628000),(2,-1079628000),(0,-1079628000),
(7,-1079628000),(5,-1079628000),(3,-1079628000),(1,-1079628000),
(8,-1079628000),(6,-1079628000),(4,-1079628000),(2,-1079628000),(0,-1079628000),
(9,-1079628000),(7,-1079628000),(5,-1079628000),(3,-1079628000),(1,-1079628000),
(10,-1079628000),(8,-1079628000),(6,-1079628000),(4,-1079628000),(2,-1079628000),(0,-1079628000),
ideone
知道怎么了吗?
如果我能为Python做这件事,那就更酷了。:天

最佳答案

>>> for n in xrange(11):
    print ", ".join(str((a, n-2*a)) for a in xrange(n/2+1))
...
...
(0, 0)
(0, 1)
(0, 2), (1, 0)
(0, 3), (1, 1)
(0, 4), (1, 2), (2, 0)
(0, 5), (1, 3), (2, 1)
(0, 6), (1, 4), (2, 2), (3, 0)
(0, 7), (1, 5), (2, 3), (3, 1)
(0, 8), (1, 6), (2, 4), (3, 2), (4, 0)
(0, 9), (1, 7), (2, 5), (3, 3), (4, 1)
(0, 10), (1, 8), (2, 6), (3, 4), (4, 2), (5, 0)

08-28 06:11