2015-05-15 75 views
1
include <iostream> 
#include <stdio.h> 

using namespace std; 

int main() { 

    int n; 
    scanf("%d",&n); 
    int l,k; 
    for(int i=0;i<n;i++) 
    { 
     scanf("%d %d",&l,&k); 
     char ch[l+1]; 

     /****/  scanf("%s",ch); 

     printf("Are we here"); 
     char ci=ch[0]; 

     int flips=0; 
     int count=0; 
     for(int j=0;j<l;j++) 
     { 
      if(ch[j]==ci) 
     { 
       count++; 
       if(count>k) 
       { 
       flips++; 
       count=1; 
       if(ci=='1') 
       { 
        ci='0'; 
        ch[j]='0'; 
       } 
       else if(ci=='0') 
       {    
        ci='1'; 
        ch[j]='1'; 
       } 
       } 
      } 
     else if(ch[j]!=ci) 
     { 

      if(ci=='1') 
      ci='0'; 
      else if(ci=='0') 
      ci='1'; 
      count=1;   
     } 


     } 

     printf("\n%d",flips); 
     printf("\n%s",ch);  

    } 

    return 0; 
} 

輸入3個測試用例,每個測試用例有兩行輸入。scanf問題(「%s」)

3 
2 1 
11 
2 2 
11 
4 1 
1001 

應該給輸出

1 
10 
0 
11 
2 
1010 

這基本上是做了一些標準編程大賽的東西代碼。它需要測試用例的數量,並且對於每個測試用例,打印出兩行所需的答案。現在,當我逐行輸入所有輸入時,它可以正常工作,並且可以獲得所有輸出。但是當我只是複製粘貼所有的輸入時,我只能得到除最後一個輸出以外的所有內容,而我必須按回車鍵才能獲得最後的輸出。現在我做了一些基本的調試,發現它與scanf("%s",ch)代碼行有關。任何幫助..此外,我覺得程序的邏輯並不重要。我想的東西更爲基本的這裏...

+0

不會複製刪除空行,並重新縮進你的代碼。 –

+0

警告:此代碼可被利用。你不應該使用'scanf(「%s」)' – rev

+0

你有什麼建議? – user2277550

回答

1

我想爲「\ r \ n」,當你複製粘貼文本

+0

但是爲什麼只有最後一次輸入 – user2277550

+0

好,也許原因是沒有。您可以將文本粘貼到文本編輯器(如記事本++)並打開隱形字符。你會看到是否有換行符。 – Sergi0