0と1のn個の配列があるとき、1の並びの両端を0にするプログラムを書きたいのですが、ルールに乗っ取って考えるとかけないです。。
1の並びは一度しか出現しない。
1が0個からn個のケースまで対応できるようにする。
入力
標準入力。初めに0も1の並びの数n。その次に空白で区切られた0と1のn個の並び。
出力
標準出力。1の両端が0に変更された並び。
ルール
変数は配列を除いて三つまで。配列は一つまで。forやwhileは三つまで。if文、三項演算子の使用禁止。ソースコードはカッコだけやコメントアウトを除いて18行以内で収められる。
実行例はこんな感じです。
[入力]
5
0 1 1 1 0
[出力]
0 0 1 0 0
ルールがヒントになるみたいですが、どのような考え方でできるのでしょうか??
もしわかる方いらっしゃいましたら教えていただけると嬉しいです。
以下のソースコードならifは利用していないですが、これも無しで考えたいです。
C
1#include <stdio.h> 2int main(){ 3 int b[256]; 4 int i, n; 5 scanf("%d", &n); 6 for(i=0; i<n; i++) scanf("%d", &b[i]); 7 for(i=0; i<n; i++) printf("%d ", i>0&&i<n-1&&b[i-1]+b[i]+b[i+1]>2); 8} 9
回答3件
あなたの回答
tips
プレビュー