Bestcoder比赛再次爆0(应该是一直是0)
来源:互联网 发布:window 安装ubuntu 编辑:程序博客网 时间:2024/05/18 00:09
挺受打击的,哎.......
但是略有收获,遍历一个数组所有的组合,共有2^n-1种;
参考:http://www.cnblogs.com/shuaiwhu/archive/2012/04/27/2473788.html
我改造之后的代码(遍历全部):
#include <stdio.h>void combine_increase(int* arr, int start, int* result, int count, const int NUM, const int arr_len);void combine_decrease(int* arr, int start, int* result, int count, const int NUM);int main(){ int arr[] = {1, 2, 3, 4, 5, 6}; int num; int result[7]; for(num=1;num<=6;num++){combine_increase(arr, 0, result, num, num, sizeof(arr)/sizeof(int)); printf("分界线\n"); combine_decrease(arr, sizeof(arr)/sizeof(int), result, num, num); printf("--------------------------------------------------------\n"); } return 0;}//arr为原始数组//start为遍历起始位置//result保存结果,为一维数组//count为result数组的索引值,起辅助作用//NUM为要选取的元素个数//arr_len为原始数组的长度,为定值void combine_increase(int* arr, int start, int* result, int count, int NUM, int arr_len){ int i = 0; for (i = start; i < arr_len + 1 - count; i++) { result[count - 1] = i; if (count - 1 == 0) { int j; for (j = NUM - 1; j >= 0; j--) printf("%d\t",arr[result[j]]); printf("\n"); } else combine_increase(arr, i + 1, result, count - 1, NUM, arr_len); }}//arr为原始数组//start为遍历起始位置//result保存结果,为一维数组//count为result数组的索引值,起辅助作用//NUM为要选取的元素个数void combine_decrease(int* arr, int start, int* result, int count, int NUM){ int i; for (i = start; i >=count; i--) { result[count - 1] = i - 1; if (count > 1) { combine_decrease(arr, i - 1, result, count - 1, NUM); } else { int j; for (j = NUM - 1; j >=0; j--) printf("%d\t",arr[result[j]]); printf("\n"); } }}今天就看了一道题,还没做出来,挺心塞的。
hdu1049(把队友的代码粘过来,参考一下吧):
#include <iostream>#include <algorithm>#include <cstdio>using namespace std;int b[30];int n;bool cmp(int a,int b){ return a>b;}int Find(int k,int star);int main(){ int T; scanf("%d",&T); while(T--){ int a; scanf("%d%d",&n,&a); int i,j; for(i = 0;i<n;i++) scanf("%d",&b[i]); sort(b,b+n,cmp); int cnt = 0; int term; int p = 0; for(i = 0;i<n;i++){ if(a>=b[i]){ if(p == 0){ term = a%b[i]; p++; } else{ term = term%b[i]; p++; } if(Find(term,i+1)||term == 0) break; } } if(i == n) printf("-1\n"); else if(term == 0) printf("1\n"); else printf("%d\n",p+1); } return 0;}int Find(int k,int star){ int i; for(i = star;i<n;i++) if(k == b[star]) return 1; return 0;}
慢慢来,加油!!!
0 0
- Bestcoder比赛再次爆0(应该是一直是0)
- listView.getFirstVisiblePosition() 一直是 0 错误
- DropDownList的SelectedIndex一直是0
- AnySDK打包进度条一直是0%
- caffe训练数据时,accuracy 一直是0
- caffe 进行自己的imageNet训练分类:loss一直是87.3365,accuracy一直是0
- 使用loadrunner11录制脚本时出现events一直是0解决方法
- 爬虫抓取BestCoder的比赛排名
- Android 重写lisview的adapter的getView方法,position一直是0
- [Phonegap+Sencha Touch] 移动开发44 eclipse一直是Android sdk content loader 0%的解决方案
- stm32 sdio acmd41 无响应。一直是返回0x3f。解决方法是清除crc错误中断
- Android 重写lisview的adapter的getView方法,position一直是0
- 比赛 I - 0 or 1
- 1602: 再次签到 //注 本题有错!但是就这么AC了! 应该是DP不是贪心!
- 关于Android获取版本号(versionCode)一直是1的问题
- 一直是晴天
- Tri_integral Winter Training 0 比赛总结
- BestCoder
- Linux下的虚拟Bridge实现
- UART 通信逻辑协议设计(2)
- Android开发中调用系统设置界面
- nefu998整除问题(高精度除法)
- uva 146
- Bestcoder比赛再次爆0(应该是一直是0)
- 面试题36:数组中的逆序对
- hdu 5327 Olympiad
- 那些年,这些年
- Python Requests快速入门
- iOS 代码自定义cell示例
- Tomcat中JVM内存溢出及合理配置
- 控件——时间与日期
- react-native试玩(1)