文档介绍:(1-5题为今天重写一次,其下所农示的提交次数为今夭重写的提交次数尹其他题提交次数为原来的次数,部分不详,题号前加星号表示未AC)1・N皇后(位运算版)这个是看了标程后写的'很有意脛很巧廿的做冻,也很径大,一決wa,是因为没写inc(sum),。①《只输出结果数目)programquen;varkySum^ndongint;proceduredfs(rowjyr:longint);//row:列I,r:两条对角线pos^p:longint;beginifrowokthenbeginpos:=kandnot(lorrorrow);whilepos<>0dobeginp:=posand(notpos+1);皇后的地方pos:=pos-p;II表示需要放皇后的的位子II有皇后要放”取最右边的1Up表示某个可以放上II放上皇后dfs(row+p,(l+p)shll,(r+p)shr1);H回溯,注意对角线的处理end;endelseinc(sum);end;beginII每一位都是1,目标状态readln(n);k:-(lshln)-l;dfs(OAO);writeln(sum);end.②《输出前3种方案,tyvj080)programquen{输出前3种解};vark,sumji,i,t:longint;a:array[0..14]oflongint;proceduredfs(dep,ro4r:longint);//dep:F=f)i6fr层数row:br:两条对角线pos,p,i:longint;beginifdep>nthenbegininc(sum);ifsum<=3thenbeginfori:=ltondowrite(a[i]/');writeln;end;endelsebeginfori:=ltondobeginp:=(lshl(i-1));pos:-pand(roworIif(pos=0)I缺策有效〃输出决策n^i位是否可以放皇后“二进制决策r);//pos记录冲突I般有冲突thenbegina[dep]:-i; II记录决策dfs(dep+l,row+p,(l+p)shll,(r+p)shr1);〃下一层递归end;end;endend;II每一位都是l,目标状态beginreadln(n);k:=(lshln)-l;fori:-ltondobeginaUl:=;〃初始化第一行,有n个状态t:=lshl(i-l);shllytshr1);end;writeln(sum);,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如:阵列02345000671034560500204560067**********有6个细胞输入格天InputFormat第一行:两个数字MN(1<=44<=5OK=N<8O)示该阵列有At行7V列从第2行到第M+7行每行有决续的N个字符输出格•式OutputFormat一行:细胞个数似乎我写出来的不是标准的捜奈……〃思路:以鈿胞中的一个点%起点,将他及他周圄的不为0的点都改%0,然后找下一个。//提交情况:一次ACprogramtyvj1127;varn,m,re:longint;a:array[l..100,1..100]oflongint;procedureinit;beginassign(input/);assign(output/);reset(input);rewrite(output);end;procedurechange(ij:longint);varkj:longint;begina[i,j]:=O;ifi>lthenifa[i-l,j]>0thenchange(i-l,j);ifa[i+l,j]>0thenchange(i+l,j);ifj>lthenifa[i,j-l]>0thenchange(i,j-l);ifa[iJ+lJ>0thenchange(i,j+l);end;procedureprepare;vari,j:longint;k:char;beginreadln(n,m);fori:=ltondobeginforj:=ltomdobeginread(k);val(k,a[i,jl);end;readln;end;re:=0;fori:=ltondofo叮:=1tomdobeginifa[i,j]<>0thenbeginchange(i,j);re:=re+l;end;end;writeln(re);end;procedureoutit;beginclose(input);close(output);