前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C/C++】之组合不重复的3位数

【C/C++】之组合不重复的3位数

作者头像
天寒雨落
发布2022-11-20 11:10:08
7190
发布2022-11-20 11:10:08
举报
文章被收录于专栏:编程学习之路

个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主 💬 刷题网站:在线刷题 (educoder.net)

 特别标注:该博主将长期更新c语言内容,初学c语言的友友们,订阅我的《初学者入门C语言》专栏,关注博主不迷路!

目录

组合不重复的3位数

编程要求

测试输入

测试输出

C语言

题解

易错点

C++

全排列函数 next_permutation

代码

执行结果


组合不重复的3位数

编程要求

给出四个不同的数字,能够组成多少个不重复的3位数,按照从小到大的顺序输出,每行一个。

测试用例

测试输入

1 2 3 4

测试输出

123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432

C语言

题解

代码语言:javascript
复制
#include <stdio.h>
void composeNumber(int a, int b, int c, int d);

int main() {
	// 输入的4个不同数字
	int a, b, c, d;
	scanf("%d%d%d%d", &a, &b, &c, &d);
	composeNumber(a, b, c, d);

}

// 完成这个函数
void composeNumber(int a, int b, int c, int d) {
	/********* Begin *********/
	int s, num[4];
	num[0] = a;
	num[1] = b;
	num[2] = c;
	num[3] = d;

	for (int i = 0; i < 4; i++) {
		s = 0;

		for (int j = 0; j < 4; j++) {
			s = num[i] * 100;

			if (num[j] != num[i]) {
				s += num[j] * 10;
			} else
				continue;

			for (int k = 0; k < 4; k++) {
				if (num[k] != num[j] && num[k] != num[i]) {
					s += num[k];
					printf("%d\n", s);
					s -= num[k];
				} else
					continue;
			}
		}

	}

	/********* End *********/
}

易错点

在每个循环刚开始的时候都要重置一下s,不然在算新的循环时会用上次循环结束的值,就比如上面如果不加重置的话会出现除1,2,3,4的其他数,第一次循环的重置为0,第二次循环的重置为            s = num[i] * 100;也就是每次循环到这里只有百位是确定好的,其他位置还没有确定,第三次重置因为下面没有循环了,所以要把重置内容放在循环的末尾,如果加了个位,就在输出完删去,这样保证下次再加个位还是个位为0,如果没有加个位也就不用重置。

执行结果

C++

全排列函数 next_permutation

它会把数组中元素的排列顺序都排列一遍后返回一个false,在此之前都返回的是true

代码

代码语言:javascript
复制
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int a[4];

	for (int i = 0; i < 4; i++) {
		scanf("%d", &a[i]);
	}

	do {
		for (int i = 0; i < 3; i++) {
			printf("%d", a[i]);
		}

		printf("\n");
	} while (next_permutation(a, a + 4));

	return 0;
}

执行结果

各位C语言的初学者有问题随时都可以问我,随时为您解惑!!!

👍+✏️+⭐️是对博主最大的鼓励与支持!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 组合不重复的3位数
    • 编程要求
      • 测试输入
        • 测试输出
          • C语言
            • 题解
            • 易错点
          • C++
            • 全排列函数 next_permutation
            • 代码
            • 执行结果
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档