• CCF_2016_09_2_火车购票


    题目难度不大,只是提醒自己数组的初始化方式,尽量标准一点,否则,不同编译器之间,这种错误很难发现。

    • 在函数外部定义的内置类型的数组,最常用的int被默认地初始化为0;
    • 在函数内部定义的内置类型数组,默认初始值是未指定的;
    • int 类型数组列表初始化时,提供的初始值数量小于数组维度时,剩下的元素被初始化为默认值0;

    自已在函数 外部int a[20][6]={0};自己测试没错,提交之后总是0分。最后发现就是这种初始化方式的问题。
    引用C++primer的话就是。

    默认初始化:

    如果定义变量时没有指定初始值,变量被默认初始化,并被赋予默认值。
    默认值由变量类型决定,同时,变量的位置也会对默认值有影响。
    对于数组的列表初始化,书中写的好像有些模糊和vector联系到了一起。

    #include<iostream>
    #include<queue>
    using namespace std;
    int findN(int(*a)[6],int nums) {//查找是否有可以提供连座的行;
    	for (int i = 0; i < 20; ++i) {
    		if (a[i][0] >= nums) {
    			return i;
    		}
    	}
    	return -1;
    }
    void getAns(int(*a)[6],int nums,queue<int>&q) {
    		int x = findN(a,nums);
    		if (x == -1) {//如果不存在,就进行
    			int hadfind = 0;
    			for (int ii = 0; ii < 20; ++ii) {
    				int jj = 1;
    				for (; jj < 6; ++jj) {
    					if (a[ii][jj] == 0) {
    						a[ii][jj] = 1;
    						q.push(ii*5+jj);
    						++hadfind;
    					}
    					if (hadfind == nums) {
    						a[ii][0] = 5 - jj;
    						return;
    					}
    				}
    				a[ii][0] = 0;
    			}
    		}
    		else {
    			int k = 1;
    			while (a[x][k] ==1) {
    				++k;
    			}
    			int endi = k+nums;
    			for (; k < endi;++k ) {
    				q.push(x*5+k);
    				a[x][k] = 1;
    			}
    			a[x][0] -= nums;
    		}
    }
    void input() {
    	queue<int> q[100];
    	int a[20][6] = {0};//a[i][0]显示当前行可用座位树;a[i][1]->a[i][5]表示对应座位;
    	int n;
    	cin >> n;
    	for (int i = 0; i < 20; ++i) {
    		a[i][0] = 5;
    	}
    	int x = 0;
    	for (int i = 0; i <n; ++i) {
    		cin >> x;
    		getAns(a,x,q[i]);
    	}
    	for (int i = 0; i < n; ++i) {//输出结果;
    		while (!q[i].empty()) {
    			cout << q[i].front() << " ";
    			q[i].pop();
    		}
    		cout << endl;
    	}	
    }
    如有不当,欢迎指正 :)
  • 相关阅读:
    Windows 2008 server + IIS 7 设置身份模拟(ASP.NET impersonation)
    记录windows操作系统启动日志
    C# 重启计算机的问题
    AcWing 1086 恨7不是妻
    AcWing 1084. 数字游戏 II
    AcWing 1083. Windy数
    golang学习笔记 生成JSON及解析JSON 清明
    WEB前端底层知识之浏览器是如何工作的(2)渲染引擎
    ASP.NET MVC Razor 输出没有编码的HTML字符串
    ext.grid的配置属性和方法
  • 原文地址:https://www.cnblogs.com/lif323/p/7460773.html
Copyright © 2020-2023  润新知