全部评论
//
// Created by yudw on 2017/8/12.
//
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
/*
1.操作序列:原始序列跟第n次反转后的序列是有规律的
*/
int main()
{
int n;
while(cin>>n)
{
vector<int> vec_nums(n);
for(int i=0; i<n; ++i)
{
cin>>vec_nums[i];
}
bool flag = n % 2 == 0; // n是否为偶数
vector<int> vec_item(n);
int half = n/2;
if(flag)
{
for(int i=0, k=0; i<n &&half + k < n && half - k - 1 >= 0; ++k, i += 2)
{
vec_item[half + k] = vec_nums[i];
vec_item[half - k - 1] = vec_nums[i+1];
}
}
else
{
vec_item[half] = vec_nums[0];
for(int i=1, k=0; i<n &&half + k < n && half - k - 1 >= 0; ++k, i += 2)
{
vec_item[half + k + 1] = vec_nums[i];
vec_item[half - k - 1] = vec_nums[i+1];
}
}
for(int i=0; i<vec_item.size()-1; ++i)
{
cout<<vec_item[i]<<' ';
}
cout<<vec_item.back();
}
return 0;
}
//
// Created by yudw on 2017/8/12.
//
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
/*
2. 独立的小易 要注意小易的水果有初值
*/
int main()
{
int x, f, d, p; // 房租, 已有水果,d元钱, p元每个
while (cin>>x>>f>>d>>p)
{
int days = 0;
int day_cost = x + p;
if (f >0 && d > x)
{
if(d/x >= f) // 有更多的钱
{
days += f;
d -= x*f;
f = 0;
}
else if(d/x < f) // 钱不够
{
days += d/x;
d -= x*days;
f -= days;
}
}
if(d < x ) //没钱了
{
cout<<days;
}
else if(d >= x ) // 还有钱, 水果已经吃完了
{
days += d / day_cost;
cout<<days<<endl;
}
}
return 0;
}
//
// Created by yudw on 2017/8/12.
//
#include <iostream>
#include <algorithm>
#include <deque>
using namespace std;
/*
3.疯狂队列,贪心方法,每一次将最大的疯狂值的序列加入
*/
int main()
{
int n;
while (cin>>n)
{
vector<int> vec_h(n);
for (size_t i=0; i<n; ++i)
{
cin>>vec_h[i];
}
sort(vec_h.begin(), vec_h.end());
deque<int> deque_crazy;
deque_crazy.push_back(vec_h[0]);
for (int i = 1, j = n-1; deque_crazy.size() != n; )
{
int head = deque_crazy.front();
int tail = deque_crazy.back();
int crazy1 = abs(head - vec_h[i]);
int crazy2 = abs(head - vec_h[j]);
int crazy3 = abs(tail -vec_h[i]);
int crazy4 = abs(tail - vec_h[j]);
if(max(crazy1, max(crazy2, max(crazy3, crazy4))) == crazy1)
{
deque_crazy.push_front(vec_h[i]);
++i;
} else if(max(crazy1, max(crazy2, max(crazy3, crazy4))) == crazy2)
{
deque_crazy.push_front(vec_h[j]);
--j;
}else if(max(crazy1, max(crazy2, max(crazy3, crazy4))) == crazy3)
{
deque_crazy.push_back(vec_h[i]);
++i;
} else
{
deque_crazy.push_back(vec_h[j]);
--j;
}
}
int ans =0;
for(size_t i=1; i<n; ++i)
{
ans += abs(deque_crazy[i] - deque_crazy[i-1]);
}
cout<<ans<<endl;
}
return 0;
}
import java.util.Deque; import java.util.LinkedList; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner s = new Scanner(System.in); while(s.hasNext()){ int a = Integer.parseInt(s.nextLine()); int[] da = new int[a]; String[] data = s.nextLine().split("\\s"); for(int i = 0; i < data.length; i++){ da[i] = Integer.parseInt(data[i]); } Deque<Integer> q = new LinkedList<Integer>(); for(int i = 0; i < da.length; i++){ if(i %2 != 0){ q.addFirst(da[i]); }else{ q.addLast(da[i]); } } for(int i = 0; i<a;i++){ da[i] = q.remove(); } if( a%2 ==0){ for(int i = 0; i<da.length-1;i++){ System.out.print(da[i]+" "); } System.out.println(da[da.length-1]); }else{ for(int i = da.length-1; i>0;i--){ System.out.print(da[i]+" "); } System.out.println(da[0]); } } } }
我也是C++岗位。 第一道是交错01串?我用三个指针遍历一遍01串,ac了; 第二道,我***了,脑袋抽了,直接暴力,用reverse(),每次都反转数组,结果case通过率50%,提示超时; 第三道,没想出来,求教。。。 跪了跪了
老哥第三题题目是疯狂身高队列那个题吗?
题目原来不一样啊。请问楼主什么岗
相关推荐
04-20 23:51
湖南文理学院 golang 点赞 评论 收藏
分享
04-17 12:35
哈尔滨理工大学 C++ 点赞 评论 收藏
分享
点赞 评论 收藏
分享