普通网友 2023-12-19 06:29 采纳率: 0%
浏览 12

现在给你n个数字xi,请你分别从中选m个数字组成两个m位数,要求这两个数的差最大,并输出这个差。2<=n<=100,1<=m<=17,0<=xi<=9,m<=n。

现在给你n个数字xi,请你分别从中选m个数字组成两个m位数,要求这两个数的差最大,并输出这个差。2<=n<=100,1<=m<=17,0<=xi<=9,m<=n。

输入格式
第一行,两个数,n和m。
第二行,n个数字。

输出格式
一个整数

输入/输出例子1
输入:

4 3

1 1 2 3

输出:

209
样例解释
n个数字中保证至少1个非0。两个m位数所选的数字不一定要全部相同。
注意:组成的m位数必须满足首位不是0(一位数除外)


```c++


#include<bits/stdc++.h>
const int N=1e9;
using namespace std;
int a[100001]={},n,c;
int fun(int mid){
    int x=0,s=0;    
    for(int i=2;i<=n;i++)
        if(a[i]-a[x]>mid){
           s++;
            x=i;
        }
    return s;
}
int main(){
    cin>>n>>c;
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    int l=0,r=N,mid;
    sort(a+1,a+n+1);
    while(l<=r){
        mid=(l+r)/2;
        int s1=fun(mid);
        if(s1>=c) l=mid+1;
        else r=mid-1;
    }
    printf("%d",l);
}

展开全部

  • 写回答

1条回答 默认 最新

  • 柯本 2023-12-19 08:26
    关注
    
    #include <iostream>
    #include <climits>
    using namespace std;
    #define maN 101
    int used[maN];
    int p[maN];
    int s[maN];
    static int count = 0;
    int ma = 0, mi = INT_MAX;
    void permute(int pos, const int n, const int r)
    {
      int i, t;
      if (pos == r)
        {
          if (s[p[0]] == 0) //头上不能是0
            return;
          t = 0;
          for (i = 0; i < r; i++)
            {
              t = t * 10 + s[p[i]];
            }
          if (ma < t)
            ma = t;
          if (mi > t)
            mi = t;
           count++;
          return;
        }
      for (i = 0; i < n; i++)
        {
          if (!used[i])
            {
              used[i] = 1;
              p[pos] = i;
              permute(pos + 1, n, r);
              used[i] = 0;
            }
        }
    }
    int main()
    {
      int n, m;
      cin >> n >> m;
      for (int i = 0; i < n; i++)
        cin >> s[i];
      permute(0, n, m);
      cout << ma - mi << endl;
      return 0;
    }
    
    

    展开全部

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部