额,输入的可能不是四位数字
<span style="font-size:14px;">//注意这道题的输入可能不是4位数字,比如输入1,能否正确解读为0001
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
using namespace std;
void deal(char *c,char*a,char*b)
{
sort(c+0,c+4);
strcpy(b,c);
reverse(c+0,c+4);
strcpy(a,c);
//printf("a=%s\n",a);
//printf("b=%s\n",b);
}
void build(char *a,char*b,char*c)
{
int v = 1;
int big,small;
while(v!=6174 && v !=0)
{
deal(c,a,b);
big = atoi(a);
small = atoi(b);
v = big-small;
printf("%04d - %04d = %04d\n",big,small,v);
sprintf(c,"%04d",v);
}
}
int main()
{
int buf;
char c[10];
char a[10];
char b[10];
cin>>buf;
sprintf(c,"%04d",buf);
build(a,b,c);
return 0;
}</span>
本文介绍了一个基于四数游戏的算法实现,通过一系列步骤展示如何将任意四位数字通过最大值与最小值相减的方式最终得到6174这个神奇数字。文章提供了完整的C++代码示例,包括对输入数字的处理、排序、反转等关键操作。
1655

被折叠的 条评论
为什么被折叠?



