杭电acm

本文提供了多个ACM竞赛编程题目解决方案,包括基本数学运算、字符串处理、最大子数组求和及字符串频率统计等,使用Java语言实现,适用于初学者理解和掌握ACM编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录下自己在acm上例子
1001

//两个数字相加
import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		while(in.hasNextInt())
		{
			int sum=0;
			int i=0;
			int num=in.nextInt();
			for(i=0;i<=num;i++) {
				sum=sum+i;
			}
			System.out.println(sum);
			System.out.println();
		}
	}
}


1002


//两个大数字相加,通过转化成string,进行相加
import java.math.BigInteger;
import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		int count=in.nextInt();
		for(int i=0;i<count;i++) {
			int j=i+1;
			String a=in.next();
			String b=in.next();
			String str =new BigInteger(a).add(new BigInteger(b)).toString() ;
			System.out.println("Case "+j+":");
			System.out.println(a+" + "+b+" = "+str);
			if(i!=count-1){
				//第一个输出后换行   最后一个不换行
				System.out.println();
			}

		}
	}
}

1003

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
      Scanner cin=new Scanner(System.in);
      while(cin.hasNext())
      {
    	  int T=cin.nextInt();
	      int No=1;
	      while(T>0)
	      {
	    	  int N=cin.nextInt();
	    	  int[] num=new int[N]; 
	    	  for(int i=0;i<N;i++)
	    	  {
	    		  num[i]=cin.nextInt();
	    	  }
	    	 int maxSum=-10000,thisSum=0;
	    	 int start=0,end=0;
	    	 for(int i=0;i<N;i++)
	    	 {
	    		 System.out.println("thisSum:"+thisSum);
	    		 thisSum+=num[i];   		 
	    		 if(thisSum>maxSum)
	    			 {
	    			     maxSum=thisSum;
	    			     end=i;
	    			 }
	    		 if(thisSum<0)
	    		 {
	    			 thisSum=0;  			 
	    		 }   		 
	    	 }
	    	 int sum=0;
	    	 for(int i=end;i>-1;i--)
	    	 {    		
	    		 sum+=num[i];
	    		 if(sum==maxSum)start=i;
	    	 }
	    	 System.out.println("Case "+No+":"); 
	    	 System.out.println(maxSum+" "+(start+1)+" "+(end+1));
	    	 No++;
	    	 if(T!=1)System.out.println();
	    	 T--;
    	  
      }
	}
	}
}

1004方法一

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
      Scanner cin=new Scanner(System.in);
      while(cin.hasNext()) {
    	  int T=cin.nextInt();
	      if(T==0)return;
	      String[] str=new String[T];
	      for(int i=0;i<T;i++)
		  {
	    	  str[i]=cin.next();
		  }
	      int t=0;
		  int max=0;
		  int index=0;
	      for(int i=0;i<str.length;i++) {
	    	 for(int j=i;j<str.length;j++) {
	    		 if(str[i].equals(str[j])) {
	    			 t++;
	    		 }
	    	 }
	    	 if(t>max) {
	    		 max=t;
	    		 index=i;
	    	 }
	    	 t=0;
	      }
	      System.out.println(str[index]);
		}
	}
}

1004方法二

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
 	public static void main(String[] args) {
 		// TODO 自动生成的方法存根
      Scanner cin=new Scanner(System.in);
      while(cin.hasNext()) {
    	  int T=cin.nextInt();
 	      if(T==0)return;
 	      String[] str=new String[T];
 	      for(int i=0;i<T;i++)
 		  {
 	    	  str[i]=cin.next();
 		  }
 	      Map<String, Integer> map = new HashMap<>();
 	      int is_exist=0;
 		  int value=0;
 	      for(int i=0;i<str.length;i++) {
 	    		  if(map.size()==0){
 	        		  map.put(str[i],0);
 	        	  }else {
 	        		  for(String key:map.keySet())
 	        		  {
 	        			  if(key.equals(str[i])) {
 	        				  is_exist=1;
 	        				  value = map.get(key);//
 	        				  //System.out.println("str[i]:"+str[i]+" value:"+value);
 	        				  break;
 	        			  }else {
 	        				  is_exist=0;
 	        				  value=1;
 	        			  }
 	        		  }
 	        	  } 
 	    	  //System.out.println("is_exist:"+is_exist+" str[i]2:"+str[i]+" value2:"+value);
 			  if(is_exist==0) {
 				  map.put(str[i],1);
 			  }else{
 				  value++;
 				  map.put(str[i],value);
 			  }
 	      }
 	      String maxStr="";
 	      int nowCount=0;
 	      int maxCount=0;
 	      for(String key:map.keySet())
 		  {
 	    	  nowCount = map.get(key);
 	    	  if(nowCount>maxCount) {
 	    		  maxStr=key;
 	    		  maxCount=nowCount;
 	    	  }
 		  }
 	      System.out.println(maxStr);
 		}
 	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值