CCF认证经验

Posted LeewinPlus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF认证经验相关的知识,希望对你有一定的参考价值。

思维步骤:

一、根据题目要求,分析程序输入、输出的格式和关系

二、分析题目给的输入输出样例或自己写一个样例,用自己的思维来思考如何处理这个问题才能得到这样的输入(此过程先不考虑程序代码如何实现,只想着怎样的思路才能解决问题即可)

分析时:题目中对算法要求或描述基本上就是算法的核心,循环或自动的执行算法要求就是解题的算法

三、将思维程序化

  1. 思考输入的数据如何存储(以方便程序中使用这些数据为目的)
  2. 算法核心处一般都为if...else、for等结构的综合使用(将之前自己处理这个问题的思维用代码来代替,即找出需要循环执行的、满足不同的条件有不同的执行等这样类似的模块,用相应的程序结构来实现)
  3. 边界值、临特殊值等单独分析

四、遇到bug,将样例代入程序中,找出不到位的地方,一般都是临界值的问题

五、反复的将样例与程序进行对照,将程序完善

六、检查命名、格式等问题,比如主类名要求命名为Main(很多认证考试都有这样的要求),输出中是否可用换行、空格等。


下面通过例题为分析:

2015年12月 CCF认证第二题

描述:输入一个m行n列的矩阵,要求将横向和纵向3个或3个以上连续相等和数据置0

样例:

输入:

4 5

2 2 2 3 3

2 3 2 2 2

2 5 2 3 3

4 6 6 6 3

输出:

0 0 0 3 3 

0 3 0 0 0 

0 5 0 3 3 

4 0 0 0 3

程序代码:

import java.util.Scanner;

public class Main 
	public static void main(String[] args) 
		Scanner scan = new Scanner(System.in);
		int m = scan.nextInt();
		int n = scan.nextInt();
		int mark = 1;
		int ArrayIn1[][] = new int[m][n];
		int ArrayIn2[][] = new int[m][n];
		int ArrayOut[][] = new int[m][n];

		for(int i = 0; i < m; i ++)
			for(int j = 0; j < n ; j ++)
				ArrayIn1[i][j] = scan.nextInt();
				ArrayIn2[i][j] = ArrayIn1[i][j];
			
		
		
		for(int i = 0; i < m; i ++)
			for(int j = 1; j < n ; j ++)
				if(ArrayIn1[i][j] == ArrayIn1[i][j-1])
					mark ++;
				else
					if(mark >= 3)
						for(int k = j-mark; k < j; k ++)
							ArrayIn1[i][k] = 0;
						
					
					mark = 1;
				
				
				if(j == n - 1)
					if(mark >= 3) for(int k = j-mark+1; k < n; k ++)
						ArrayIn1[i][k] = 0;
					
					mark = 1;
				
				
			
		
		
		for(int i = 0; i < n; i ++)
			for(int j = 1; j < m ; j ++)
				if(ArrayIn2[j][i] == ArrayIn2[j-1][i])
					mark ++;
				else
					if(mark >= 3)
						for(int k = j-mark; k < j; k ++)
							ArrayIn2[k][i] = 0;
						
					
					mark = 1;
				
				
				if(j == m - 1)
					if(mark >= 3) for(int k = j-mark+1; k < m; k ++)
						ArrayIn2[k][i] = 0;
					
					mark = 1;
				
				
			
		
		
		for(int i = 0; i < m; i ++)
			for(int j = 0; j < n ; j ++)
				if(ArrayIn1[i][j] == ArrayIn2[i][j])
					ArrayOut[i][j] = ArrayIn1[i][j];
				else
					ArrayOut[i][j] = 0;
				
			
		
		
		for(int i = 0; i < m; i ++)
			for(int j = 0; j < n ; j ++)
				System.out.print(ArrayOut[i][j]+" ");
			
			System.out.println();
		
		
	




以上是关于CCF认证经验的主要内容,如果未能解决你的问题,请参考以下文章

ccf考试400分有用吗

CCF认证历年试题

CCF计算机职业资格认证考试题解

2022 ccf c时间

CCF认证201803-1 跳一跳

CCF认证201909-4推荐系统