| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 822 人关注过本帖
标题:C++如何做
只看楼主 加入收藏
微痕啊
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-6-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
C++如何做
( 1)输入正整数的个数n,输出n 个数连接成的最大的多位数。找出n 个数中最大数字的位数,然后将所有的数字通过后面补零的方式扩展成为最大位数。把变换后的n 位数从大到小排序, 然后把添加上的零去掉,按顺序输出的序列即为所求的最大数字。
( 2)数据结构采用结构体,由于正整数的位数不确定, 可能非常大, 所以数据类型采用字符数组。
Struct
{
char data[20]; //数据
char ext_data[20]; //扩展数据
}Elem[N]; //结构体数组
N 可以在宏定义中定义: #define N 20
( 3)算法流程
输入正整数个数n;
Max=0; //Max 存储最大位数
//输入正整数并计算最大位数
for (i=0;i<n;++i)
{
输入Elem[i].data;
Strcpy(Elem[i].ext_data,Elem[i].data);
Tmp=strlen(Elem[i].data); //计算输入数字的位数
If(Tmp>Max)
Max=Tmp;
}
//计算扩展数字
For (i=0;i<n;++i)
{
tmp=strlen(Elem[i].data); //计算输入数字的位数
m=Max-tmp; //m 为需要补0 的个数
定义一个m 个?0?的字符串tmp_str;
Strcat(Elem[i].ext_data,tmp_str);
}
//排序
任选一中排序算法(冒泡、插入、选择等)对数字结构体数组按照ext_data 从大到小排序。
//输出
按序输出结构体数组中data 数据。
搜索更多相关主题的帖子: 输入 个数 位数 data Elem 
2018-06-21 11:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
你有没有觉得这个算法是错误的,比如 98 和 9 组成的最大数应该是 998,不是 989
以下是按照你这个错误算法写出的C++代码
程序代码:
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
using namespace std;

int main( void )
{
    size_t n;
    cin >> n;
    vector<string> con;
    con.reserve( n );
    copy_n( istream_iterator<string>(cin), n, back_inserter(con) );
    sort( con.begin(), con.end(), greater<string>() );
    copy( con.begin(), con.end(), ostream_iterator<string>(cout,"") ) = "\n";
}

2018-06-22 11:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
给你一个使用正确算法的C++吧
程序代码:
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
using namespace std;

int main( void )
{
    size_t n;
    cin >> n;
    vector<string> con;
    con.reserve( n );
    copy_n( istream_iterator<string>(cin), n, back_inserter(con) );
    sort( con.begin(), con.end(), [](const string& a, const string& b){return a+b>b+a;} );
    copy( con.begin(), con.end(), ostream_iterator<string>(cout,"") ) = "\n";
}

2018-06-22 12:05
快速回复:C++如何做
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016573 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved