|
发表于 2021-11-7 16:51:43
|
显示全部楼层
本帖最后由 人造人 于 2021-11-7 16:53 编辑
- #include <stdio.h>
- void output(size_t buff[], size_t index, size_t begin, size_t step, size_t end, size_t *count) {
- if(begin > end) return;
- if(begin == end) {
- printf("%lu: ", (*count)++);
- for(size_t i = 0; i < index; ++i) {
- printf("%lu ", buff[i]);
- }
- printf("\n");
- return;
- }
- for(size_t i = 1; i <= step; ++i) {
- buff[index] = i;
- output(buff, index + 1, begin + i, step, end, count);
- }
- }
- int main(void) {
- size_t buff[1024];
- size_t count = 0;
- output(buff, 0, 0, 3, 15, &count);
- return 0;
- }
复制代码
- #!/usr/bin/env python
- #coding=utf-8
- def output(buff, index, begin, step, end, count):
- if begin > end: return
- if begin == end:
- print('%d: ' % count[0], end = '')
- count[0] += 1
- for i in range(index):
- print(buff[i], end = ' ')
- print('')
- for i in range(1, step + 1):
- buff[index] = i
- output(buff, index + 1, begin + i, step, end, count)
- buff = [0] * 1024
- count = [0]
- output(buff, 0, 0, 3, 15, count)
复制代码 |
|