算法
wrz918
这个作者很懒,什么都没留下…
展开
-
数值计算
思路:找到最低级的运算符,然后分成左右两边进行计算,最后再根据这个运算符进行运算,把两边的结果加(减,乘,除)。代码// calculator.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include#include using namespace std;template class calc{原创 2012-04-15 20:49:16 · 235 阅读 · 0 评论 -
USACO之Friday the Thirteenth
这道题只要模拟就行了,求出每个月13日是星期几,然后汇总,输出即可(注意输出顺序!)求每个月13日是星期几,可以用递推的方法。首先先记录上个月13日是多少天,再计算从上个月13日到这个月13日有几天,这样这个月13日是星期几就很好求出了,而且速度很快。废话少说,代码上:#include #include #include static int currentDay = -18;原创 2012-05-29 16:58:48 · 317 阅读 · 0 评论 -
usaco之greedy gift givers
这道题我当年是用java做的,但是我的java代码不知道放在哪里了,只好说一下思路: 用一个数组记录每个人有多少钱,然后用一个hashtable来记录每个人的编号(编号和数组下标对应,用java做的,hashtable 干嘛不用?不过c/pascal的话就麻烦多了,其实用线性查找就ok了) 如果是给0个人,那么钱还是在自己手上,否则收到钱的每个人拥有[总钱数/ 给的人数],余原创 2012-05-29 17:02:08 · 383 阅读 · 0 评论 -
数组反转(中)
好了。我们这一次要用栈。栈是先进后出的。如果我们把一些元素(在这里况且设为Q)放入栈,然后不停地出栈,直到栈空了为止。出来的顺序一定是反的。所以呢?可以利用本性质来进行解决。第一步:定义“栈”这种数据类型(我是用C语言实现的,C++中有stack,可以少打几行代码)typedef struct stack{ int data[10]; int top;}REVS原创 2012-06-30 16:26:34 · 286 阅读 · 0 评论 -
数组反转(下)
我在数组反转(上)中已经提到了样例程序。现在我们就要实现。首先来说头文件。其实在样例程序中我最初是不打算使用头文件的。但是因为不用头文件,实现函数的时候就必须算好次序,很烦,因此我就使用头文件了。头文件中定义了我们要用的几个函数。#ifndef reversingArray_main_h#define reversingArray_main_hvoid pushToStack(in原创 2012-06-30 16:36:18 · 307 阅读 · 0 评论 -
数组反转(上)
有的时候,我们需要对数组反转。为了实现反转,我们可以用两种办法: (1) 交换法:思路:首尾配好,然后每一对每一对进行交换。代码:(从样例程序中截取的)void reverse(){ for (int i = 0;i < 5;++i) { int temp = array[i]; array[i] = arra原创 2012-06-30 16:21:07 · 324 阅读 · 0 评论