Java 如何在不使用字符串的情况下通过连接给定数组的所有元素来找到可以构造的最大连接数?
实际上,我只是为了分享另一种方法而添加了这个问题的答案,除此之外没有别的。 限制条件:Java 如何在不使用字符串的情况下通过连接给定数组的所有元素来找到可以构造的最大连接数?,java,backtracking,Java,Backtracking,实际上,我只是为了分享另一种方法而添加了这个问题的答案,除此之外没有别的。 限制条件: 1此代码不适用于大数字,而且就时间复杂性而言,它不是一个有效的解决方案 由于一些误解,我的帖子被删除了,请考虑这是我的问题和我的解决办法,只是因为有人提出了编辑,答案被添加到“我的代码到目前为止”< /强> 的问题。 import java.io.*; 导入java.util.*; 公共类解决方案 { 静态长ans=0; 公共静态void main(字符串[]args) { int N,计数=0; 长n;
1此代码不适用于大数字,而且就时间复杂性而言,它不是一个有效的解决方案
<强>由于一些误解,我的帖子被删除了,请考虑这是我的问题和我的解决办法,只是因为有人提出了编辑,答案被添加到“我的代码到目前为止”< /强>
的问题。import java.io.*;
导入java.util.*;
公共类解决方案
{
静态长ans=0;
公共静态void main(字符串[]args)
{
int N,计数=0;
长n;
扫描仪扫描=新扫描仪(System.in);
N=scan.nextInt();
long[]ar=新长[N];
long[]vis=新长[N];
对于(int i=0;我不确定我是否理解这个问题。如果你想让这个对未来的读者有用(我想你会的,否则你不会自己回答)然后,我将进一步阐述问题。你是否尝试发布问题和你自己的答案,以便为其他有类似问题的人提供解决方案?在这种情况下,我建议你阅读,在问题描述中添加详细信息,并等待其他人提供备选解决方案,然后再发布你自己的。如果你想将你的解决方案发布到be改进,在提问时进行检查,尽量显示在寻找解决方案方面所付出的努力水平,以及您遇到困难和需要帮助的确切位置。仅提出一些DA/Algo问题不符合stackoverflow问题的条件。如果这是您迄今为止编写的代码,则不要将其作为答案发布-编辑您的原始问题。这就是为什么您需要这样做的原因r的帖子以前被删除过。
import java.io.*;
import java.util.*;
public class Solution
{
static long ans=0;
public static void main(String[] args)
{
int N,count=0;
long n;
Scanner scan=new Scanner(System.in);
N=scan.nextInt();
long[] ar=new long[N];
long[] vis=new long[N];
for(int i=0;i<N;i++)
{
ar[i]=scan.nextLong();
vis[i]=0;
n=ar[i];
while(n!=0)
{
n/=10;
count++;//It counts the number of digits of all elements in the given array
}
}
int index=0;
long val=0,a=0;
int x=0;
recur(ar,vis,index,N,count,val,a);
System.out.println(ans);
}
static void recur(long ar[],long vis[],int index,int N,int count,long val,long a)
{
if(index==N)
{
ans=Math.max(ans,val);
return;
}
for(int i=0,j=0;i<N;i++,j++)
{
if(vis[i]==0)
{
vis[i]=1;
a=counter(ar[i]);//counter returns no. of digits in the current element
count-=a;//this returned value is subtracted from the count(which is the number of digits of all elements in the array)
val+=ar[i]*(Math.pow(10,count));// now the corresponding digit's place is multiplied with the element to make up the number
recur(ar,vis,index+1,N,count,val,a);
vis[i]=0;
val-=ar[i]*(Math.pow(10,count));
count+=a;
}
}
}
static long counter(long val)
{
int count=0;
while(val!=0)
{
val/=10;
count++;
}
return count;
}
}