// kvalue.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define _CRT_NONSTDC_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS
int subarraySum(int* nums, int numsSize, int k) {
int res = 0, n = numsSize;
int* sums = (int *)malloc(sizeof(int)*numsSize);
sums[0] = nums[0];
for (int i = 1; i < n; ++i) {
sums[i] = sums[i - 1] + nums[i];
}
for (int i = 0; i < n; ++i) {
if (sums[i] == k) ++res;
for (int j = i - 1; j >= 0; --j) {
if (sums[i] - sums[j] == k)
++res;
}
}
return res;
}
int getNumLen(int n)
{
int len=0;
if (n == 0)return 1;
while (n > 0) {
len++;
n=n / 10;
}
return len;
}
char* int2char(int num,int len) {
char *data=(char*)malloc(sizeof(char)*len);
memset(data, 0, len);
data[len - 1] = '\0';
int i = len - 2;
while (i > -1) {
data[i] = (num % 10+'0');
num = num / 10;
i--;
}
return data;
}
int StrCmp(char *A,char *B){
char ch1[10000];
char ch2[10000];
strcpy(ch1, A);
strcat(ch1, B);
strcpy(ch2, B);
strcat(ch2, A);
return strcmp(ch1, ch2)>0;
}
void bubSprt(char **a, int n) {
for (int i = 0; i < n - 1; i++) { //循环控制交换的轮数
for (int j = 0; j < n - i-1; j++) {//循环控制每轮需要交换的次数
if (StrCmp(a[j], a[j+1])) {
char *temp ;
temp=a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
char * largestNumber(int* nums, int numsSize) {
char **NumArr;
NumArr = (char **)malloc(sizeof(char *)*numsSize);
int len = 0;
int talLen = 0;
char output[100000] = {0};
for (int i = 0; i < numsSize; i++)
{
len = getNumLen(nums[i]);
NumArr[i] = int2char(nums[i], len + 1);
/*char ch[100];
_itoa(nums[i], ch, 10);
NumArr[i] =(char*)malloc(sizeof(char)*len);
strcpy(NumArr[i], ch);*/
}
bubSprt(NumArr, numsSize);
for (int i = numsSize-1; i > -1; i--)
{
strcat(output, NumArr[i]);
}
return output;
}
int main()
{
int nums[5] = { 3,30,34,5,9 };
char * arr = largestNumber(nums,5 );
return 0;
}