day(1)
2016-03-29 21:14
344 查看
题目描述:C++任意输入一个整数n,再把它的各位数字次序打乱重新组合一个新的整数,使其值最大
思路:(1) 先把n拆分放到数组中
(2) 对数组中的元素排序(从大到小)
(3) 对应相加
具体代码实现:
// sum.cpp : C++任意输入一个整数,再把它的各位数字次序打乱重新组合一个新的整数,使其值最大
#include "stdafx.h"
#include<iostream>
using namespace std;
int Sum(int n){
int a[10]={0};
int i=0;
int sum=0;
while(n)
{
a[i]=n%10;
n=n/10;
i++;
}
int k=i;
for(i=0;i<k;++i)
{
for(int j=i+1;j<k;++j)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<k;i++)
{
sum=sum*10+a[i];
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
int n=0;
cout << "请输入整数n:" ;
cin >> n;
cout << Sum(n) << endl;
return 0;
}
题目描述:C++任意输入一个整数n,再把它的各位数字次序打乱重新组合一个新的整数,使其值最大
思路:(1) 先把n拆分放到数组中
(2) 对数组中的元素排序(从大到小)
(3) 对应相加
具体代码实现:
// sum.cpp : C++任意输入一个整数,再把它的各位数字次序打乱重新组合一个新的整数,使其值最大
#include "stdafx.h"
#include<iostream>
using namespace std;
int Sum(int n){
int a[10]={0};
int i=0;
int sum=0;
while(n)
{
a[i]=n%10;
n=n/10;
i++;
}
int k=i;
for(i=0;i<k;++i)
{
for(int j=i+1;j<k;++j)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<k;i++)
{
sum=sum*10+a[i];
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
int n=0;
cout << "请输入整数n:" ;
cin >> n;
cout << Sum(n) << endl;
return 0;
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Linux C函数参考手册(PDF版)
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C# partial关键字说明
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua中调用C++函数示例
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始