一組數字,求其能組成的最大數?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 20
#define MAXL MAXN*(10+1)
char ln[MAXL], *p;
unsigned int uis[MAXN];
int i, n, r;
int compare(const void *a, const void *b) {
char da[11], db[11], dab[21], dba[21];
sprintf(da, "%u", *(unsigned int *)a);
sprintf(db, "%u", *(unsigned int *)b);
sprintf(dab, "%s%s", da, db);
sprintf(dba, "%s%s", db, da);
return strcmp(dba, dab);
}
int main() {
fgets(ln, MAXL, stdin);
p = ln;
i = 0;
while (1) {
r = sscanf(p, "%u%n", &uis[i], &n);
if (1 == r) {
i++;
if (i >= MAXN) {
printf(">%d number is ignored.\n", MAXN);
break;
}
p += n;
}
else if (0 == r) {
p++;
}
else break;
}
n = i;
qsort(uis, n, sizeof(unsigned int), compare);
ln[0] = 0;
for (i = 0; i<n; i++) sprintf(ln, "%s%u", ln, uis[i]);
printf("%s\n", ln);
getchar();
return 0;
}
來自csdn一位版主,寫的很好!
相關推薦
一組數字,求其能組成的最大數?
//一組正整數,求用這組正整數對應的數字字串連在一起能組成的最大數 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXN 20 #define MA
C語言,產生一組數字,並將其寫入txt文件中
#include<stdio.h> /*產生一組連續的數字,並將其寫到txt文件中*/ /*說明:本程式在在win10 系統64位下用Dev-C++ 5.11版本編譯器編譯的*/int main(){ int m=1; FILE *fp=NULL; fp=fopen("D:\\1.txt","
輸入一組數字,找出其排列的最小值
#include <iostream> using namespace std; void bubblesort(int a[], int x) { int y, z; for (y = 0; y <= x - 1; y++) {
有一組數字,從1到n,從中減少了3個數,順序也被打亂,放在一個n-3的數組裡,請找出丟失的數字,最好能有程式,最好演算法比較快
static void Main() { GetRemoveNumbers(1000, 3).ForEach(n => Console.WriteLine("{0}", n)); }
有一組數字,從1到n,從中減少了3個數,順序也被打亂,放在一個n-3的數組裡,請找出丟失的數字,最好能有程式,最好演算法比較快...
static void Main() { GetRemoveNumbers(1000, 3).ForEach(n => Console.WriteLine("
編寫程序從cin讀取一組數,輸出其和
cin stream sum num += pac 編寫 name while #include <iostream> using namespace std; int main() { int num, sum = 0; while (cin
判斷一組數字,是否連續
int for clas lse ons static .so size class 1 public class Demo { 2 public static void main(String[] args) { 3 List list =
Python 輸入一串數字,對其排序或找尋max或min值
思考:當我們輸入一串數字,使用什麼函式?排序使用什麼函式? 我使用的是Python 3 的input()函式,注意:input()函式的返回值始終是字串 如果我們輸入的是整數,我們需要int函式進行轉化,如果是浮點型,則使用float函式轉化。。。。 排序使用的是sort()函式,轉換時還使用了map(
給定任意正整數數字,求其位數並順序、逆序輸出各位數字
{int i;if (n<=0){printf("NULL");}else if (n>0) {for ( i=1;(n/10)!=0;i++){n=n/10; }return i;}}int main(){printf("%d\n",Several_digits(0));pr
【codeforces 691 D】【並查集 或者 dfs】aps in Permutation【給一個1到N的排列,M個操作,每次可以交換X Y位置上的數字,求可以得到的最大字典序的數列】
題意: 給一個1到N的排列,M個操作(1<=N,M<=106),每個操作可以交換X Y位置上的數字,求可以得到的最大字典序的數列。 思路: 把位置分成若干塊,每一塊裡面的位置都是可以被
用x,y,z組成2個3位數,並將其相加成一個數字,求xyz
int x,y,x,i,result=520; //可令result為隨機一個數字 for(i=100;i<=result;i++) //次處為演算法靈魂之處 { x=i%100; //依次遞增1,遞增到10後變為0 y=i%100/10
Java: 演算法 - 1,2,3,4 取3個數組成三位數字,求能排列組合數量,並將它們打印出來
涉及數學公式: A n m
給定一個數組,求其某個子區間,該區間和最大
#include<iostream> #include<vector> #include<iterator> #include<type_traits> #include<ctime> #include<ran
0059 給定一些值和一個要組成的數字,求總的組合數(遍歷解答樹)
如:有1分,2分,5分,10分四種硬幣,每種硬幣無限,給定Target分錢,求多少種組合可以合成Target分錢? // ShangJi.cpp : 定義控制檯應用程式的入口點。 #include
java中將一組人分兩組,求其兩組重…
初學者建議看第一種方法!第二種比較全,運用迭代,比較燒腦 第一種方法:自己寫的! sample.org.exercisejava.util.Arraysjava.util.Scannerp
求一組數字組成的最大整數三種解法
整理一下網上關於這道題和自己關於這道題的解法 方法一: 利用a+b和b+a進行比較選擇其中數值較大的組合方式 public class Solution { public void m
Leetcode 213. House Robber II -打家劫舍,每家都有一定數量的錢,多家組成一個圓形,首尾相鄰,不能偷盜相鄰的兩家,求可偷盜的最大金額
You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are&
對於一個m行m列的方陣,求其每一行,每一列及主對稱線元素之和,最後按照從大到小的順序依次輸出。
#include<iostream> using namespace std; #define MAX 10 int main() { int m,n=0,i,j,a[10][10],sum,num[10],temp,max; cout<<"en
動態建立一組按鈕,併為其繫結變數引數事件方法
做專案時,遇到一個比較奇怪的需求,需要用highChart作圖,但是由於橫座標是公司的部分職級的人員,且人員數目較多,這樣就會造成作出來的圖好長, 在有限的螢幕上顯示不全。於是客戶要求,可以將所有人員根
求一個數組中, 連續幾個數的最大值,及其變種
import java.util.Arrays; import java.util.Scanner; public class KeShui { public static int max = 0; //網易瞌睡 public static void maxiva