65,210
社区成员
发帖
与我相关
我的任务
分享
//Time.cpp
#include <iostream>
#include <stdio.h>
using namespace std;
class Time
{
private:
int hour;
int minute;
int second;
public:
Time(int h,int m,int s);
friend void display(Time&t);
friend Time operator+(const Time&t1,const Time& t2);
friend ostream& operator<<(ostream& output,Time t);
};
Time::Time(int h,int m,int s)
{
hour=h;
minute=m;
second=s;
}
Time operator+(const Time&t1,const Time&t2)
{
return Time(t1.hour+t2.hour,t1.minute+t2.minute,t1.second+t2.second);
}
ostream& operator<<(ostream&output,Time t)
{
output<<t.hour<<':'<<t.minute<<':'<<t.second<<endl;
return output;
}
void display(Time&t)
{
cout<<t.hour<<':'<<t.minute<<':'<<t.second<<endl;
}
int main(void)
{
Time t1(10,30,20);
Time t2(10,10,20);
display(t1);
display(t2);
cout<<(t1+t2);
getchar();
return 0;
}
//八皇后问题.cpp(回朔算法)
#include<iostream>
#include <stdlib.h>
#include<stdio.h>
using namespace std;
void Trial(int,int);
int Isleggal(int,int);
int count=0;
const int n=8;
int Queen[n];
int main(void)
{
Trial(0,n);
//cout<<"总共放法有"<<count<<"种"<<endl;
printf("总共方法有%d种",count);
system("pause");
return 0;
}
void Trial(int i,int n)
{
if(i>n-1)
{
count++;
//cout<<"这是第"<<count<<"种放置方法:"<<endl;
printf("这是第%d中放法",count);
for(int k=0;k<n;++k)
{
cout<<"在第"<<k+1<<"列第"<<Queen[k]+1<<"行放一个棋子;";
cout<<endl;
}
}
else
for(int j=0;j<n;++j)
{
Queen[i]=j;
if(Isleggal(i,j))//划分函数模块
Trial(i+1,n);
else
continue;//不满足条件就尝试在下一行放一个棋子
}
}
int Isleggal(int i,int j)
{
int k=0;
while(Queen[k]!=j&&abs(Queen[i]-Queen[k])!=abs(i-k)&&k<i)
++k;
if(k==i) return 1;
else return 0;
}
