CCF CSP认证JAVA(一)

CCF CSP认证JAVA(一),第1张

CCF CSP认证JAVA(一)

文章目录
  • 202109-1数组推导
  • 202104-1灰度直方图
  • 202109-2非零段划分
    • HashMap和TreeMap
    • 思路
    • Map遍历
      • 方法一:
      • 方法二:
      • 方法三:
      • 方法四:
    • 今日推歌

202109-1数组推导

//100分
import java.util.Scanner;
public class Main {
    public static void main(String [] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int []arr = new int[n];
        for(int i=0;iarr[i-1]){
                min=min+arr[i];
            }
            max=max+arr[i];
        }
        System.out.println(max+"n"+min);
    }
}


202104-1灰度直方图

//100分
public class Main {
    public static void main(String [] args){
        run();
    }
    public static void run(){
        //输入
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int l = scanner.nextInt();
        int[] h = new int[l];
        int[] ele = new int[n*m];
        for(int i=0;i 

System.out.print()输出不自动换行;System.out.println()会自动换行

栗子:每输出5个数据换一行

//其实就是加一个计数器
int a=1;
  for(int i=0;i<20;i++){
      System.out.print(i+" ");
      if(a%5==0){
          System.out.println();
      }
      a++;
  }

202109-2非零段划分

HashMap和TreeMap
  • HashMap:基于哈希表实现,继承AbstractMap。适用于在Map中插入、删除和定位元素。
  • Treemap:基于红黑树实现,继承自SortedMap。适用于按自然顺序或自定义顺序遍历键(key)。
  • HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap。
思路
  1. 写一个计算某数组arr[i]中非零段的个数的函数notZero();

  2. 在Map中存储数组中每一种非零的值以及其对应在数组中的下标位置(list表示);

    (此时为了方便后面的 *** 作,在数组两端各加一个0,这样并不会影响结果)

  3. 从小到大遍历数组中每一种非零的值(由于不需要输出key值,此处使用values遍历),并将其在每个位置都置零,再计算当前数组的非零段个数。

  4. 非零段数的改变:改变某位置的元素为0,若它的前一个元素和后一个元素都非零,则非零段数在原基础上加一;若它的前一个元素和后一个元素都为零,则非零段数在原基础上减一;其余情况的非零段数不改变。

  5. 使用Math.max()找到最大非零段数,输出即可。

//100分
public class Main {
    public static void main(String [] args){
        
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] arr = new int[n+2];
        arr[0]=arr[n+1]=0;
        
        Map> map = new TreeMap<>();
        for(int i=1;i<= n;i++){
            arr[i]= scanner.nextInt();
            if (arr[i]!=0){
                if (map.containsKey(arr[i])){
                    map.get(arr[i]).add(i);
                }else {
                    ArrayList list = new ArrayList<>();
                    list.add(i);
                    map.put(arr[i],list);
                }
            }
        }
        
        int count = notZero(arr);
        int max = count;
        Collection> lists = map.values();
        for (ArrayList list:lists){
            for (int i:list){
                arr[i]=0;
                if(arr[i-1] != 0 && arr[i+1] != 0){
                    count++;
                }else if (arr[i-1] == 0 && arr[i+1] == 0){
                    count--;
                }
            }
            max = Math.max(max,count);
        }
        System.out.println(max);
    }
    
    public static int notZero(int[] arr){
        int nums = 0;
        for(int i=0;i 
Map遍历 
方法一: 

通过forEach接口

Integer value=null;
myMap.forEach((k,v)->
{
  value=v;
});
方法二:

通过keySet遍历(先得到key的值,再通过key值得到value值)

String key = null;
Integer value = null;
Iterator iter = myMap.keySet().iterator();
while (iter.hasNext()) {
    key = (String)iter.next();
    value = (Integer)myMap.get(key);
}
方法三:

通过entrySet遍历(通过Map.entrySet使用迭代器iterator遍历key和value)

Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry。它表示Map中的一个实体(一个key-value对)

String key = null;
Integer value = null;
Iterator iter = myMap.entrySet().iterator();
while(iter.hasNext()) {
    Map.Entry entry = (Map.Entry)iter.next();
    key = (String)entry.getKey();
    value = (Integer)entry.getValue();
}
方法四:

通过values遍历(通过Map.values()遍历所有的value,但不能遍历key)

//使用迭代器
Integer value = null;
Collection c = myMap.values();
Iterator iter= c.iterator();
while (iter.hasNext()) {
    value = (Integer)iter.next();
}
//不适用迭代器
Collection c = myMap.values();
for (String v : c) {
    System.out.println("value= " + v);
   }

今日推歌

----《我爱你不问归期》

是想念如你温柔过境
才发现原来花开都有声音
只要你在我生命途径
再不怕时光匆匆如旅
是幸福在我耳际低语
才忘了寒风不曾停下足迹
直到我走遍半生四季
才懂得风景都不及你

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5606302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存