import java.util.Scanner; public class Main { public static final int MAX_TASK_NUM = 100; public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); while(scan.hasNext()) { int ***Blocks = scan.nextInt(); int[] taskPages = new int [MAX_TASK_NUM]; int i = 0; int page = scan.nextInt(); while(page != -1) // 输入结束标志 { taskPages[i++] = page; page = scan.nextInt(); } System.out.println(LRU.calMissingPages(***Blocks, i, taskPages)); } scan.close(); } } class LRU { public static int calMissingPages(int ***Blocks, int taskNum, int taskPages[]) { int[] *** = new int [***Blocks]; // 缓存 ***[0] = taskPages[0]; // 预处理,先将第一个作业页面放入缓存 int ***Pages = 1; // 已缓存的页面数 int missingNum = 1; // 缺页次数 boolean missingFlag; // 缺页标志 for(int i = 1; i < taskNum; i++) { missingFlag = true; for(int j = 0; j < ***Pages; j++) { if(***[j] == taskPages[i]) // 命中 { missingFlag = false; int t = ***[j]; for(int k = j + 1; k < ***Pages; k++) ***[k - 1] = ***[k]; ***[***Pages - 1] = t; break; } } if(missingFlag) // 未命中 { missingNum++; if(***Pages == ***Blocks) // 缓存已满 { for(int k = 1; k < ***Pages; k++) ***[k - 1] = ***[k]; ***[***Pages - 1] = taskPages[i]; } else // 缓存未满 { ***[***Pages] = taskPages[i]; ***Pages++; } } } return missingNum; } }