华为OJ(四)
2015-08-09 21:07
218 查看
1、火车进站
出现编译错误,因为的数据初始化使用的是:
编译器不支持这样使用,所以要申请一个固定大小的数组
而且数据初始化之后还没有排序,要加上排序,代码修改后如下:
可惜还是编译没有通过,因为火车进站的输出序列的全排列输出不等同与全排列,有一些无法实现,例如输入:1 2 3,就不可能有3 1 2这样的输出。
重新整理了思路,模拟了车站进出的过程,运行成功了,代码如下:
2、输出字符串最后一个单词的长度
#include<iostream> #include<string> #include<stdio.h> using namespace std; int n; int* add(int list[],int num1,int num2){ int temp = list[num1]; list[num1] = list[num2]; int i; for(i=num2;i>num1;i--) if((i-1)==num1){ list[i] = temp; }else{ list[i] = list[i-1]; } return list; } void fun(int list[],int begin,int end){ int i; if(begin == end){ for(i=0;i<n;i++) cout<<list[i]<<" "; cout<<endl; }else{ for(i=begin;i<=end;i++){ //swap(list[begin],list[i]); list = add(list,begin,i); fun(list,begin+1,end); //swap(list[begin],list[i]); list = add(list,begin,i); } } } //全排列 int main(){ //数据初始化 cin>>n; int list ; int i; for(i=0;i<n;i++){ cin>>list[i]; } fun(list,0,n-1); }
出现编译错误,因为的数据初始化使用的是:
//数据初始化 cin>>n; int list ;
编译器不支持这样使用,所以要申请一个固定大小的数组
而且数据初始化之后还没有排序,要加上排序,代码修改后如下:
#include<iostream> #include<string> #include<stdio.h> using namespace std; int n; int* add(int list[],int num1,int num2){ int temp = list[num1]; list[num1] = list[num2]; int i; for(i=num2;i>num1;i--) if((i-1)==num1){ list[i] = temp; }else{ list[i] = list[i-1]; } return list; } void fun(int list[],int begin,int end){ int i; if(begin == end){ for(i=0;i<n;i++) cout<<list[i]<<" "; cout<<endl; }else{ for(i=begin;i<=end;i++){ //swap(list[begin],list[i]); list = add(list,begin,i); fun(list,begin+1,end); //swap(list[begin],list[i]); list = add(list,begin,i); } } } //全排列 int main(){ //数据初始化 cin>>n; int list[100]; int i; for(i=0;i<n;i++){ cin>>list[i]; } //对数据进行排序 int j; int temp; for(int i=0;i<n;i++){ for(int j=i;j<n;j++){ if(list[i]>=list[j]){ temp = list[i]; list[i] = list[j]; list[j] = temp; } } } fun(list,0,n-1); }
可惜还是编译没有通过,因为火车进站的输出序列的全排列输出不等同与全排列,有一些无法实现,例如输入:1 2 3,就不可能有3 1 2这样的输出。
重新整理了思路,模拟了车站进出的过程,运行成功了,代码如下:
#include<iostream> #include<vector> using namespace std; int nStatic; //火车总数量(在fun方法中表示还没有进站的火车数量) void fun(char list[],vector<char> tmp,int in,int now,int n,int strNum,char str[]); void funOut(char list[],vector<char> tmp,int in,int now,int n,int strNum,char str[]){ //火车出 vector<char>::iterator it = tmp.end() - 1; //it = tmp.end() - 1; //cout<<"Out:"<<*it<<" "; str[strNum++]=*it; tmp.pop_back(); in--; fun(list,tmp,in,now,n,strNum,str); } void funIn(char list[],vector<char> tmp,int in,int now,int n,int strNum,char str[]){ //火车进 tmp.push_back(list[now]); //cout<<"In:"<<list[now]<<" "; in++; now++; //有火车进入则执行now++ n--; fun(list,tmp,in,now,n,strNum,str); } void fun(char list[],vector<char> tmp,int in,int now,int n,int strNum,char str[]){ //递归函数 if(in>0){ //有火车进入 //火车出 funOut(list,tmp,in,now,n,strNum,str); if(n>0) //火车进(如果还有火车没有进) funIn(list,tmp,in,now,n,strNum,str); else{ //如果火车全部出站 //cout<<"strNum:"<<strNum<<endl<<endl; if(strNum==(nStatic-1)){ int i; for(i=0;i<=strNum;i++){ if(i==strNum) cout<<str[i]<<endl; else cout<<str[i]<<" "; } } } }else{ //没有火车进入 if(n>0) //火车进(如果还有火车没有进) funIn(list,tmp,in,now,n,strNum,str); } } int main(){ int in=0; //进入车站的火车数量 int now=0; //现在正准备进入的火车 char list[100]; char str[100]; vector<char> tmp; //数据初始化 cin>>nStatic; int strNum = 0; int i; for(i=0;i<nStatic;i++){ cin>>list[i]; } //执行递归函数 fun(list,tmp,in,now,nStatic,strNum,str); return 0; }
2、输出字符串最后一个单词的长度
#include<iostream> #include<cstdio> using namespace std; int main(){ //初始化数据 char str[1000]; gets(str); //获取字符串长度 int len=0; int i; for(i=0;str[i]!='\0';i++){ if(str[i]==' '){ len = 0; }else{ len++; } } cout<<len; }
相关文章推荐
- 【GDOI 2013模拟】Processer
- 周赛一 HDU 4727
- 编程之美----2.20 程序理解和时间分析
- 剑指offer_面试题14_调整数组顺序使奇数位于偶数前面(函数指针用法)
- LeetCode(143) Reorder List
- js获取Url后的数据转换为json
- C#根据身份证号码,计算生日、年龄、性别
- [SDOI2011][BZOJ2286] 消耗战|虚树|树型dp|树上倍增LCA
- 欧拉工程第58题:Spiral primes
- unity3d碰撞检测之立方体碰撞算法
- mongodb3.0.5的用户权限认证和使用可视化工具登录的一系列问题
- 华为OJ(输出数组最小k个数)
- UVA - 10132 File Fragmentation
- 指数型母函数理解
- Tian Ji -- The Horse Racing
- uva11992-Fast Matrix Operations(区间增值、改值)
- 107. Binary Tree Level Order Traversal II
- Majority Element:主元素
- 欧拉工程第57题:Square root convergents
- 读书笔记之c和指针(10)