上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 57 下一页

2011年8月23日

枚举之三

摘要: //sicily 1048. Inverso//由于方格翻转两次就相当没有翻转,所以翻转的次数只可能取0,1,要么没翻,要么翻1次,//这样初始状态为"wwwwwwwww",我们可以计算出每种翻转可能组合的结果,比如翻转 2459 后变成 bbwbwbwbw,那我们可以标记 bbwbwbwbw 的答案为 2459//对于sample中的 bbwbwbwbw ,可以直接输出 2459 .因为 wwwwwwwww 经翻转 2459 后变成 bbwbwbwbw,那么 bbwbwbwbw 再经翻转 2459 后就变成 wwwwwwwww (翻转两次相当于没翻)#include< 阅读全文

posted @ 2011-08-23 17:03 sysu_mjc 阅读(162) 评论(0) 推荐(0) 编辑

枚举之四

摘要: //poj 1166 The Clocks#include<iostream> //枚举+位运算 260K 204MS #include<string>using namespace std;string str[10]={" ","ABDE","ABC","BCEF","ADG","BDEFH","CFI","DEGH","GHI","EFHI"};// A 对应 arr 阅读全文

posted @ 2011-08-23 17:03 sysu_mjc 阅读(178) 评论(0) 推荐(0) 编辑

枚举之一

摘要: //每一个点(i,j)最多做一次翻转,因为翻转两次相当于没有翻转//所以结果可以转化为一个只包含0、1的十六位数组,(1表示翻转)//枚举所有的可能性组合,逐个检验,取包含1最少的串 for(i=1;i<(1<<16);++i)#include<iostream> //poj 2965 枚举,时间 922MS 险过 using namespace std;int table[4][4],tmp[4][4],i,j,k;char ch[4][5];int main(){ int c,num,inf=20,p[16],res[16]; for(i=0;i<... 阅读全文

posted @ 2011-08-23 17:02 sysu_mjc 阅读(164) 评论(0) 推荐(0) 编辑

2011年8月22日

冒泡排序

摘要: #include<iostream>using namespace std;const int Maxsize=10;int list[Maxsize];void bubblesort(int list[],int n){ int i,j,tag=1,x; for(i=n-1;i>0&&tag;i--) { tag=0; for(j=0;j<i;j++) if(list[j]>list[j+1]) { x=list[j];list[j]=list[j+1];list[j+1]... 阅读全文

posted @ 2011-08-22 15:10 sysu_mjc 阅读(110) 评论(0) 推荐(0) 编辑

快排之二

摘要: #include <iostream>using namespace std;struct node { int index; int num;}list[100000];void QuickSort(int beg,int end){ if(beg<end) { int low=beg,high=end; node pivot=list[beg]; while(low < high) { while(low<high && list[high].num>=pivot.num) ... 阅读全文

posted @ 2011-08-22 15:09 sysu_mjc 阅读(152) 评论(0) 推荐(0) 编辑

快排之三

摘要: #include<iostream>#include<time.h>using namespace std;//递归实现快排void QuickSort(int pData[],int left,int right){ int i=left,j=right,key=pData[left]; do { while(i<j&&pData[j]>key) j--; if(i<j) { pData[i]=pData[j]; i++; } while... 阅读全文

posted @ 2011-08-22 15:09 sysu_mjc 阅读(219) 评论(0) 推荐(0) 编辑

快排之一

摘要: //递归实现快排#include <iostream>using namespace std;int arr[1000];int part(int beg, int end){ int low=beg,high=end; int pivot=arr[beg]; while(low<high) { while(low<high && arr[high]>=pivot) --high; arr[low]=arr[high]; while(low<high && arr[low]<=pivot) ... 阅读全文

posted @ 2011-08-22 15:08 sysu_mjc 阅读(166) 评论(0) 推荐(0) 编辑

简单选择排序

摘要: #include<iostream>using namespace std;void main(){ int n;cin>>n; int i,j,min,list[100],t; for(i=0;i<n;i++) cin>>list[i]; for(i=0;i<n-1;i++) { min=i; for(j=i+1;j<n;j++) if(list[j]<list[min])min=j; //找出最小值 t=list[i];list[i]=list[min];lis... 阅读全文

posted @ 2011-08-22 15:06 sysu_mjc 阅读(123) 评论(0) 推荐(0) 编辑

基数排序

摘要: #include <iostream>using namespace std;int maxbit(int data[],int n) //求数据的最大位数{ int i,p,max=0; int *temp;temp=new int[n]; for(i=0;i<n;i++)temp[i]=data[i]; for(i=0;i<n;i++) { p=1; while(temp[i]/10>0) { p++;temp[i]=temp[i]/10; } if(p>... 阅读全文

posted @ 2011-08-22 15:05 sysu_mjc 阅读(177) 评论(0) 推荐(0) 编辑

回溯

摘要: #include <iostream> //sicily 1152. 简单的马周游问题#include<stdio.h>using namespace std;int vis[10][10],path[100],rear;int arr[8][2]={{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2}};void backtrace(int s,int t){ int m,n; for(int i=0;i<8;++i) { m=s+arr[i][0];n=t+arr[i][1]; ... 阅读全文

posted @ 2011-08-22 15:04 sysu_mjc 阅读(174) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 57 下一页

导航