33,008
社区成员
发帖
与我相关
我的任务
分享
#include <windows.h>
#include <iostream>
using namespace std;
HWND g_hWnd = NULL;
HINSTANCE g_hInst;
volatile bool bCanExit = false;
#pragma comment(linker, "/subsystem:\"console\" /entry:\"main\"")
LRESULT WndProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam) {
switch(wMsg){
case WM_CLOSE:
bCanExit = true;
PostQuitMessage(0);
return (0);
default:
return ::DefWindowProcA(hWnd, wMsg, wParam, lParam);
}
}
void CreateWnd(void) {
WNDCLASS wc = {0};
wc.style = 0;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = g_hInst;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetSysColorBrush(COLOR_GRAYTEXT);
wc.lpszMenuName = NULL;
wc.lpszClassName = TEXT("SimpleWindow");
RegisterClass(&wc);
g_hWnd = CreateWindowEx(0,
TEXT("SimpleWindow"),
TEXT("SimpleWindow"),
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
g_hInst,
0);
}
DWORD MyThread(PVOID pArg) {
CreateWnd();
MSG msg;
while(GetMessage(&msg,NULL,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
int main(){
g_hInst = GetModuleHandle(NULL);
HANDLE hThrd = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MyThread, NULL, 0, NULL);
CloseHandle(hThrd);
while(!bCanExit){
Sleep(10);
}
cout<<"windows has closed"<<endl;
getchar();
return 0;
}
这个就是你要的东西,你认真 看明白吧
class TimeBlock : IComparable<TimeBlock>
{
public int StartTime;
public int EndTime;
public int CompareTo(TimeBlock right)
{
return this.StartTime.CompareTo(right.StartTime);
}
}
public void GetSets(List<TimeBlock> timeBlockList)
{
timeBlockList.Sort();
List<List<TimeBlock>> sets = new List<List<TimeBlock>>();
foreach (TimeBlock tb in timeBlockList)
{
sets.Add(new List<TimeBlock>());
for (int i = 0; i < sets.Count; i++)
{
if (sets[i].Count == 0)
sets[i].Add(tb);
else
{
int count = sets[i].Count;
if (sets[i][count - 1].EndTime <= tb.StartTime)
sets[i].Add(tb);
}
}
}
}
#include <iostream>
using namespace std;
typedef struct __tagRecord{
int iBegin;
int iEnd;
}Record;
Record *record;
int uRecordCount;
bool *bChoosed;
void InitData();
void DFS(int uStep);//当前搜索第uStep步
void FreeResource();
bool IsOk(int uStep);//第uStep个选择是否与前面的选择冲突
int main(){
InitData();
DFS(1);//从第一个活动开始搜索
}
void InitData(){
cout<<"请输入活动的数目"<<endl;
cin>>uRecordCount;
cout<<"请输入 "<<(uRecordCount<<1)<<" 个数,其中两个一组表示开始时间和终止时间"<<endl;
record = new Record[uRecordCount];
bChoosed = new bool[uRecordCount];
for(int iIndex = 0; iIndex < uRecordCount; ++iIndex){
cin>>record[iIndex].iBegin>>record[iIndex].iEnd;
}
}
void DFS(int uStep){//当前搜索第uStep步
if(uStep == uRecordCount+ 1){//全部搜索完成,则输出可能的合法值
for(int iIndex = 0; iIndex < uRecordCount; ++iIndex){
if(bChoosed[iIndex]){
printf("(%d,%d) ", record[iIndex].iBegin, record[iIndex].iEnd);
}
}
cout<<endl;
return;
}
bChoosed[uStep - 1] = false;
DFS(uStep + 1);
bChoosed[uStep - 1] = true;
if(IsOk(uStep)){
DFS(uStep+1);
}
}
bool IsOk(int uStep){//第uStep个选择是否与前面的选择冲突
for(int iIndex = 0; iIndex < uStep - 1; ++iIndex){
if(!bChoosed[iIndex])
continue;
if(!(record[iIndex].iEnd <= record[uStep - 1].iBegin ||
record[uStep - 1].iEnd <= record[iIndex].iBegin))
return false;
}
return true;
}
#include <iostream>
using namespace std;
typedef struct __tagRecord{
int iBegin;
int iEnd;
}Record;
Record *record;
int uRecordCount;
bool *bChoosed;
void InitData();
void DFS(int uStep);//当前搜索第uStep步
void FreeResource();
bool IsOk(int uStep);//第uStep个选择是否与前面的选择冲突
int main(){
InitData();
DFS(1);//从第一个活动开始搜索
}
void InitData(){
cout<<"请输入活动的数目"<<endl;
cin>>uRecordCount;
cout<<"请输入 "<<(uRecordCount<<1)<<" 个数,其中两个一组表示开始时间和终止时间"<<endl;
record = new Record[uRecordCount];
bChoosed = new bool[uRecordCount];
for(int iIndex = 0; iIndex < uRecordCount; ++iIndex){
cin>>record[iIndex].iBegin>>record[iIndex].iEnd;
}
}
void DFS(int uStep){//当前搜索第uStep步
if(uStep == uRecordCount+ 1){//全部搜索完成,则输出可能的合法值
for(int iIndex = 0; iIndex < uRecordCount; ++iIndex){
if(bChoosed[iIndex]){
printf("(%d,%d) ", record[iIndex].iBegin, record[iIndex].iEnd);
}
}
cout<<endl;
return;
}
bChoosed[uStep - 1] = false;
DFS(uStep + 1);
bChoosed[uStep - 1] = true;
if(IsOk(uStep)){
DFS(uStep+1);
}
}
bool IsOk(int uStep){//第uStep个选择是否与前面的选择冲突
for(int iIndex = 0; iIndex < uStep - 1; ++iIndex){
if(!bChoosed[iIndex])
continue;
if(!(record[iIndex].iEnd <= record[uStep - 1].iBegin ||
record[uStep - 1].iEnd <= record[iIndex].iBegin))
return false;
}
return true;
}
package test;
import java.util.Scanner;
public class tt {
static int[] rec = new int[1000];
static boolean[] can = new boolean[1000];
static int step;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num=scanner.nextInt();
step=scanner.nextInt();
int temp = f(num)-1;
System.out.println("一共有"+temp+"种");
}
private static int f(int num) {
if(num==0) return 1;
if(num<0)return 0;
if(can[num]) return rec[num];
int tmp =f(num-step)+f(num-1);
can[num]=true;
rec[num]=tmp;
return rec[num];
}
}