我想问问为什么这段代码运行以后始终不能执行fuction2方法

P1001 A+B Problem

NightEpiphany @ 2024-03-29 22:55:40

package exercise.example;
import java.io.*;
import java.util.*;

public class P8939 {
    public static void main(String[] args) throws IOException {
        Scanner inp=new Scanner(System.in);
        int n=inp.nextInt(),q=inp.nextInt();
        ArrayList<Integer> a=new ArrayList<>();
        for (int i=0;i<n;i++)
            a.add(inp.nextInt());
        System.out.println();
        for(int i=0;i<q;i++){
            int operation = inp.nextInt();
            if(operation == 1)
                function1(inp.nextInt(), a);
            else if(operation == 2)
                function2(inp.nextInt(), a);
        }
        System.exit(0);
    }
    public static void function1(int m,ArrayList<Integer> a){
        if(!a.contains(m))
            System.out.println(-1);
        else {
            a.remove((Integer) m);
            ArrayList<Integer> b=new ArrayList<>();
            ArrayList<Integer> c=new ArrayList<>();
            b=permutationFunc(a,c,0);
            b.sort(Comparator.naturalOrder());
            System.out.println(b.get(0));
        }
    }
    public static void function2(int m,ArrayList<Integer> a){
        a.add(m);
        ArrayList<Integer> b=new ArrayList<>();
        ArrayList<Integer> c=new ArrayList<>();
        b=permutationFunc(a,c,0);
        b.sort(Comparator.naturalOrder());
        System.out.println(b.get(0));
    }
    public static int sigmaResult(ArrayList<Integer> a){
        int result=Math.abs(a.get(0)-a.get(a.size()-1));
        for(int i=a.size()-1;i>=1;i--)
            result+=Math.abs(a.get(i)-a.get(i-1));
        return result;
    }
    public static ArrayList<Integer> permutationFunc(ArrayList<Integer> list,ArrayList<Integer> b,int start)
    {
        if(start==list.size()-1) {
            b.add(sigmaResult(list));
        }
        for(int i=start;i<=list.size()-1;i++)
        {
            Swap(list,i,start);
            permutationFunc(list,b,start+1);
            Swap(list,i,start);
        }
        return b;
    }
    public static void Swap(ArrayList<Integer> list,int i,int j) {
        int temp;
        temp = list.get(i);
        list.set(i, list.get(j));
        list.set(j, temp);
    }
}

by a987654 @ 2024-03-30 20:43:22

这,至于吗?


by woaiWANYS1123 @ 2024-03-31 10:31:04

不是哥们至于吗


by ___LuXun___ @ 2024-04-04 22:08:53

简单点不行吗


by Never_Hate @ 2024-04-05 12:30:21

甚么语言的?(O_o)??


by fire_star @ 2024-04-13 22:09:15

一个a+b你至于吗???


by Jack_John_Guzon @ 2024-04-21 17:58:46

@wlwl123bc java的


by Jack_John_Guzon @ 2024-04-21 18:05:59

@NightEpiphany 你这内存绝对爆啊!简单点不行吗?

#include<bits/stdc++.h>
#define tin int//个人习惯防手滑 
#define itn int
#define tni int
#define nit int
#define nti int
#define pritnf printf
#define scnaf scanf
#define ll long long
using namespace std;
#define maxa 504

itn i,sa,sb,m;//sa是a的长度,我们(划掉)sb是b的长度,m是a与b中的较大长度 
short x[maxa]={0},y[maxa]={0};//强迫症省空间,开short。x为较长加数,y为剩下那个。x[1]、y[1]为个位,x[2]、y[2]为十位,以此类推。 
string a,b;

itn main()
{
    cin>>a>>b;//cin是string最好的搭档
    sa=a.size();//为以后方便取a的长度
    sb=b.size();//为以后方便取b的长度
    m=max(sa,sb);//为以后方便取a、b较长长度
    //
    if(sa>sb)//如果a是较长加数 
    {
        for(i=1;i<=sa;++i)//把a遍历一遍 
        {
            x[i]=a[sa-i]-48;//把a赋给x 
        }
        for(i=1;i<=sb;++i)//把较短加数一位一位加上 
        {
            x[i]+=b[sb-i]-48;//a一位一位加上b 
        }
    }
    else//上面反过来 
    {
        for(i=1;i<=sb;++i)
        {
            x[i]=b[sb-i]-48;
        }
        for(i=1;i<=sa;++i) 
        {
            x[i]+=a[sa-i]-48;
        }
    }
    //
    for(i=1;i<=m;++i)//十进制处理 
    {
        if(x[i]>=10)//如果需要进位 
        {
            x[i]-=10;//这一位留个位 
            ++x[i+1];//下一位进一 
        }
    }
    //聪明的孩子会发现此时如999+1情况比最高位高一位的地方有个1输出时将被忽略 
    if(x[m+1]>0)//最高位进位特判 
    {
        ++m;//多输出一位,这样输出时就把最高处孤独的1考虑到了 
    }
    //
    for(i=m;i>=1;--i)//反着输出,注意现在的m有可能已经加1,999+1不会输出000。 
    {
        cout<<x[i];//一位一位
    }
    return 0; 
}//本代码已进行防抄袭处理·^v·^ 

by Jack_John_Guzon @ 2024-04-21 18:10:04

(手动滑稽)


by Cute_QiQi @ 2024-04-26 19:58:55

@Jack_Shu 他是Java,你是c++!

@Jack_Shu 他是Java,你是c++!

@Jack_Shu 他是Java,你是c++!

@Jack_Shu 他是Java,你是c++!

@Jack_Shu 他是Java,你是c++!

@Jack_Shu 他是Java,你是c++!

@Jack_Shu 他是Java,你是c++!

@Jack_Shu 他是Java,你是c++!


by shimucheng @ 2024-04-26 20:48:31

太牛了


| 下一页