分享

C++ 笔试题 之基础 45 翻硬币 网易

 雪柳花明 2017-03-20
 
 代码如下:

#include "stdafx.h"
#include
#include
#include

using namespace std;

#define N 10000

int _tmain(int argc, _TCHAR* argv[])
{

int a[N] = {0};
int n, m;
int start, end;
cin >> n >> m;
for (int i = 0; i < m; i++) {
cin >> start >> end;
for (int j = start-1; j <= end-1; j++) {
a[j] ++;
if (a[j] == 2)
a[j] = 0;
}
}

for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
system("pause");
return 0;

}


另一种解决方案:
// exam.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
//输入的n个硬币
int cnt;
int op_nums;//操作的数量
cin >> cnt >> op_nums;
vector<int> coins(cnt, 0);//硬币初始化为0

//op_nums行,2列。
vector<vector<int>> vec(op_nums, vector<int>(2, 0));
//记录输入的数字
for (int i = 0; i<op_nums; i++){
cin >> vec[i][0] >> vec[i][1];
}

//开始遍历
int start, end;
for (int i = 0; i<op_nums; i++){
start = vec[i][0];//取得起始位
end = vec[i][1];//取得终止位
//下标位置,注意-1.
for (int j=start-1; j<=end-1; j++){
coins[j]++;//自增1
if (coins[j] == 2){
coins[j] = 0;
}
}
}

for (int i = 0; i<coins.size(); i++){
cout << coins[i];
}

system("pause");

return 0;
}








    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多