博文
快速排序的随机化版本(2009-09-06 15:19:00)
摘要:
#define MAX_SIZE 100#include <iostream>#include <ctime>using namespace std;
//交换指针p1,p2指向的值void exchange(int *p1,int *p2){ int temp=*p1; *p1=*p2; *p2=temp;}//pa为指向A[]的数组,p,r为下标,对A[p..r]进行就地重排,以A[r]为主元//划分为小于主元和大于主元的两部分,返回主元的下标q//例如:A[1..6]={18,8,16,6,9,10}结果:A[1..6]={8,6,9,10,18,16} q=4//(元素顺序可能与结果不一致,但小于10的元素在10前面,大于10的元素在10后面)sint partition(int *pa,int p,int r){ int x=*(pa+r); //主元 int i=p-1,j; //i表示小于主元的最后一个元素q for(j=p;j<r;j++) { if(*(pa+j)<x) { i++; exchange((pa+i),(pa+j)); } } exchange((pa+r),(pa+i+1)); return i+1;}
/......
快速排序的C++实现(2009-09-05 01:07:00)
摘要:
//quick_sort by suqiang @ neuq & jlu 更详细的内容请访问:http://blog.csdn.net/china8848
#define MAX_SIZE 100#include <iostream>using namespace std;
//交换指针p1,p2指向的值void exchange(int *p1,int *p2){ int temp=*p1; *p1=*p2; *p2=temp;}//pa为指向A[]的数组,p,r为下标,对A[p..r]进行就地重排,以A[r]为主元//划分为小于主元和大于主元的两部分,返回主元的下标q//例如:A[1..6]={18,8,16,6,9,10}结果:A[1..6]={8,6,9,10,18,16} q=4//(元素顺序可能与结果不一致,但小于10的元素在10前面,大于10的元素在10后面)sint partition(int *pa,int p,int r){ int x=*(pa+r); //主元 int i=p-1,j; //i表示小于主元的最后一个元素q for(j=p;j<r;j++) { if(*(pa+j)<x) { i++; exchange((pa+i),(pa+j)); } } ......
ACM PKU 1011 Sticks 深度优先搜索(2009-09-04 22:46:00)
摘要:
以下是lowai的程序,牛啊,学习中。
#include <stdio.h> #include <stdlib.h> //due to:qsort#include <string.h>
int n; int stick[100]; int total; int ns; //一共需要还原出的木棍数nsint ok; int len; //当次需要达到的长度
int cmp(const void *a,const void *b) { int a1 = *(int *)a; int a2 = *(int *)b; return a2 - a1; } int used[100];
int adds() { int j = 0; for (int i = 1;i <= n;i++) j += stick[i]; return j; }
void search(int,int,int);
void s(int x) { //x 正在还原第x根木棍 if (x > ns) { ok = 1; printf("%d\n", len); return; }
......
PKU ACM 1008--玛雅历(2009-09-02 10:13:00)
摘要: //第一次做的,结果不正确!!
/*
玛雅历Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 32258 Accepted: 9841
Description上周末,M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有365天的叫做hMonth的历法。这个hMonth历法拥有19个月,在开始的18个月,一个月有20天,月份的名字分别是pop, no, zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu。这些月份中的日期用0到19表示。hMonth历的最后一个月叫做uayet,它只有5天,用0到4表示。玛雅人认为这个日期最少的月份是不吉利的,在这个月法庭不开庭,人们不从事交易,甚至没有人打扫屋中的地板。
因为宗教的原因,玛雅人还使用了另一个历法,在这个历法中年被称为Tzolkin(holly年),一年被分成13个不同的时期,每个时期有20天,每一天用一个数字和一个单词相组合的形式来表示。使用的数字是1~13,使用的单词共有20个,它们分别是:imix, ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban, eznab, canac, ahau。注意:年中的每一天都有着明确唯一的描述,比如,在一年的开始,日期如下描述: 1 imix, 2 ik, 3 akbal, 4 kan, 5 chicchan, 6 cimi, 7 manik, 8 lamat, 9 muluk, 10 ok, 11 chuen, 12 eb, 13 ben, 1 ix, 2 mem, 3 cib, 4 caban, 5 eznab, 6 canac, 7 ahau, ,8 imix, 9 ik, 10 akbal ……也就是说数字和单词各自独立循环使用。
hMonth历和Tzolkin历中的年都用数字0,1,……表......
c++中string的用法(2009-09-01 13:04:00)
摘要:
原文地址:http://hi.baidu.com/clnju/blog/item/4e10b81bc622e4118618bf1a.html
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。
首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>。如下: #include <string> //注意这里不是string.h string.h是C字符串头文件
1.声明一个C++字符串 声明一个字符串变量很简单: string Str; 这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下: a) string s; //生成一个空字符串s b) string s(str) //拷贝构造函数 生成str的复制品 c) string s(str,stridx) //将字符串str内"始于位置stridx"的部分当作字符串的初值 d) string s(str,stridx,strlen) //将字符串str内"始于stridx且长度顶多strlen"的部分作为字符串的初值 e) string s(cstr) //将C字符串作为s的初值 f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。 g) string s(num,c) //生成一个字符串,包含num个c字符 h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值 i) s.~string() //销毁所有字符,释放内存 都很简单,我就不解释了。
2.字符串操作函数 这里是C++字符串的重点,我先把各种操作函数罗列出来,不喜欢把所有函数都看完的人可以在这里找自己......
如何把字符串转换为整型数(2009-09-01 12:27:00)
摘要:
char* c="123"; int i=atoi(c); // char* ch="12.3"; double j=atof(ch);......
文本和CFont类(2009-08-28 00:00:00)
摘要:
文本和CFont类1文本的显示显示文本要使用CDC类的成员函数TextOut,它的原型为:BOOL TextOut(int x, int y, const CString &str);2设置文本颜色可以体胀系数在的成员函数SetTextColor进行文本颜色的设置.virtual VOLORREF SetTextColor(COLORREF crColor);CDC还有一个可以获得当前文本颜色的函数:COLORREF GetTextColor() const;CDC类成员函数SetBkColor来设置文本的背景颜色:virtual COLORREF SetBkColor(COLORREF crColor); 函数返回原来背景颜色.CDC类还有一个获得当前背颜色的成员函数:COLORREF GetBkColor() const;
void CMyView::OnDraw(CDC* pDC) {CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data herepDC->TextOut(30,30,"文本颜色");
pDC->SetTextColor(RGB(255,0,0));pDC->TextOut(130,30,"文本颜色");
pDC->SetTextColor(RGB(255,255,255));pDC->SetBkColor(RGB(0,0,255));pDC->TextOut(230,30,"文本颜色");}
3设置文本字符的间距可以用CDC类的成员函数SetTextCharacterExtra(int nCharExtra);来改变文本字符之间的间隔.SetTextCharacterExtra(int nCharExtra);返回值是原间距.CDC类还有一个获取当前字符间距的函数int GetTextCharacterExtra() const;
void CMyView::OnDraw(CDC* pDC){CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw co......
关于如何使用CFont类改变字体(2009-08-27 23:59:00)
摘要:
谁能告诉我怎样用CFont类创建对象来改变文本框或对话框的字体,具体应该用那些函数并且应该如何使用? 问题点数:20、回复次数:3Top
1 楼liuliguo940()回复于 2002-03-22 16:08:18 得分 0
CFont m_font; m_font.creat(......) CDC pDc=GetDC(); pDC->SelectObject(&m_font); pDc->SetText("aaaa");Top2 楼caozuodong(cao)回复于 2002-03-22 16:27:17 得分 0
可是cdc类并没有settext()函数?我应该怎么做?Top3 楼lishush(☆↑苯鸟先飞↑☆)回复于 2002-03-22 16:47:46 得分 20
CEdit* pEdt=(CEdit*)GetDlgItem(IDS_EDT); pEdt->SetWindowText("lishush"); CFont newFont; newFont.CreatePointFont(180,"宋体"); pEdt->SetFont(&newFont); 但你要注意,CFont应该是一个全局变量或者成员变量,否则没有效果.
http://topic.csdn.net/t/20020322/15/593445.html......
怎样初始化一个动态数组的所有元素为0.(2009-08-27 20:36:00)
摘要:
(CC++)怎样初始化一个动态数组的所有元素为0.数组很大.若建议用循环初始化谢绝回复.谢谢!
悬赏分:0 - 解决时间: 2009年02月25日 00时05分
动态申请的数组.编译器应该不会自动初始化为0值吧.
提问者: sdf7895 - 超级魔法师 九级
最佳答案
#include <iostream>#include <memory.h>using namespace std,void main(){int n=100000,long* array=new long[n],memset(array. 0. n*sizeof(array)),}
出自:http://it.wenda.sogou.com/question/2161539.html......
笔记:函数rewind()(2009-08-26 13:28:00)
摘要:rewind 语法:
#include <stdio.h>
void rewind( FILE *stream );
函数rewind()把文件指针移到由stream(流)指定的开始处, 同时清除和流相关的错误和EOF标记.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
用于学生管理系统,文件操作中:
void CStuDataBase::Initialize(char* pszDataBaseName){ if (NULL == pszDataBaseName) throw "Connection to database fail,[Invalid FileName]";
m_pfReadFile = fopen(pszDataBaseName,"a+b"); if (NULL == m_pfReadFile) throw "Connection to database fail!";
//开始读取数据 rewind(m_pfReadFile); //跳到文件开头 int iCount = 0; while (fread(&m_stuObject[iCount],sizeof(m_stuObject[iCount]),1,m_pfReadFile) == 1) { iCount++; } fclose......
