求或结果的最小区间长度---贝壳
给定一个数组, 选取他的子区间进行或运算,求使得或运算结果最大时的区间长度 最小是多少???
(可以暴力求解的!!!! 所以,以后要是没什么思路的时候,就采用暴力的方式 )
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
int max=0;
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
max=max|a[i]; // 得到真正的最大值 即将所有的数据都或起来
}
int res=a.length;
for(int i=0;i<a.length;i++){
int cur=1,val=a[i];
for(int j=i;j<a.length;j++){
val=val|a[j];
if(val==max && cur<res){
res=cur;
}
if(cur>=res)
break;
cur++;
}
}
System.out.println(res);
}
}
也许会有遗憾,但是不应该在失败之前
浙公网安备 33010602011771号