两道机试题



import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
//a=1,b=2,B=aa,aaa=3*3*1,aa=2*2*1,计算权值
public class Baidu_1 {
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		List<String> list =  new ArrayList<String>();
		int k = sc.nextInt();
		for(int i=0;i<k;i++){
			list.add(sc.next());
		}
		
		Baidu_1.fun(list);
	}
	
	public static void fun(List<String> list){
		for(int i=0;i<list.size();i++){
			String str =list.get(i);
			int count=0;//计算连续相等个数
			int sum=0;
			//因为数组下标会超界,循环到倒数第二位,最后一位单独列出。
			for(int j=0;j<str.length()-1;j++){
				//判断当前字符是大写小写,并与后面一位比较是否相同,相同继续累加count
				if(str.charAt(j)>=97&&str.charAt(j)==str.charAt(j+1)){
					count++;
					continue;
				}else if(str.charAt(j)>=97&&str.charAt(j)==str.charAt(j+1)+32){
					count++;
					continue;
				}else if(str.charAt(j)<97&&str.charAt(j)==str.charAt(j+1)){
					count+=2;
					continue;
				}else if(str.charAt(j)<97&&str.charAt(j)==str.charAt(j+1)-32){
					count+=2;
					continue;
				//不同的话,就计算sum值,count更新,注意,当前位置的大小写判断
				}else if(str.charAt(j)>=97){
					count++;
					sum=sum+(str.charAt(j)-96)*count*count;
					count=0;
				}else{
					count+=2;
					sum=sum+(str.charAt(j)-64)*count*count;
					count=0;
				}				
			}
			//最后一位计算sum值,不需要在判断和前面的是否连续(即count值),因为上面已经判断
			//count已经代表了
			if(str.charAt(str.length()-1)>=97){
				count++;
				sum = sum+(str.charAt(str.length()-1)-96)*count*count;
			}else if(str.charAt(str.length()-1)<97){
				count+=2;
				sum = sum+(str.charAt(str.length()-1)-64)*count*count;
			}
			
			System.out.println(sum);
			
		}
	}
}


2.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class Baidu_2 {
<span style="white-space:pre">	</span>public static void main(String[] args){
<span style="white-space:pre">		</span>Scanner sc = new Scanner(System.in);
<span style="white-space:pre">		</span>int k =sc.nextInt();
<span style="white-space:pre">		</span>for(int i=0;i<k;i++){
<span style="white-space:pre">			</span>int count =sc.nextInt();
<span style="white-space:pre">			</span>List<Integer> list = new ArrayList<Integer>();
<span style="white-space:pre">			</span>for(int j=0;j<count;j++){
<span style="white-space:pre">				</span>list.add(sc.nextInt());
<span style="white-space:pre">			</span>}
<span style="white-space:pre">			</span>
<span style="white-space:pre">			</span>Baidu_2.fun(list);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public static void fun(List<Integer> list){
<span style="white-space:pre">		</span>int sum = 0;
<span style="white-space:pre">		</span>//第一个个山峰和最后一个山峰单独计算
<span style="white-space:pre">		</span>sum =list.get(0)*2;
<span style="white-space:pre">		</span>for(int i=1;i<list.size();i++){
<span style="white-space:pre">			</span>sum+=Math.abs(list.get(i)-list.get(i-1))*2;
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>sum+=list.get(list.size()-1)*2;
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>System.out.println(sum);
<span style="white-space:pre">	</span>}


}


【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值