硬币翻转问题coin

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

硬币翻转(coin)

【问题描述】在桌面上有一排硬币,共n枚,每一枚硬币均为正面向上。现在要把所有的硬币翻转成反面向上,规则是每次可翻转任意n-1枚硬币(正面向上的翻转成向下,向下的翻转成向上)。求一个最短的操作序列(将每次翻转n -1枚硬币定为一次操作)。

【输入格式】只有一行,包含一个自然数n(n为不大于100的偶数)

【输出格式】第一行包含一个整数s,表示最少需要的操作次数。接下来s行每行分别表示每次操作后桌上硬币的状态(一行包含n个整数(0或1),表示每个硬币的状态,0正面向上,1反面向上,不允许出现多余的空格)。对于有多种操作方案的情况,则只需输出一种。

【输入样例】coin.in

4

【输出样例】coin.out

4

0111

1100

0001

1111

答案:var n,i,j:longint;

a:array[1..500] of longint;

begin

assign(input,'coin.in');

assign(output,'coin.out');

reset(input);

rewrite(output);

read(n);

writeln(n);

for i:=1 to n do

begin

for j:=1 to n do

if i<>j then

if a[j]=1 then a[j]:=0 else a[j]:=1;

for j:=1 to n do

write(a[j]);

writeln;

end;

close(input);

close(output);

end.

相关文档
最新文档